@ngbase/adk 0.1.1 → 0.1.3
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/a11y/accessibility-group.d.ts +2 -5
- package/accordion/accordion-item.d.ts +7 -1
- package/accordion/public-api.d.ts +1 -1
- package/autocomplete/autocomplete-input.d.ts +2 -4
- package/autocomplete/autocomplete.d.ts +13 -4
- package/avatar/avatar.d.ts +1 -1
- package/breadcrumb/breadcrumb.d.ts +2 -3
- package/breadcrumb/public-api.d.ts +1 -1
- package/carousel/carousel.d.ts +3 -3
- package/checkbox/checkbox.d.ts +11 -3
- package/checkbox/public-api.d.ts +1 -1
- package/chip/chip.d.ts +2 -2
- package/datepicker/calendar.d.ts +3 -3
- package/datepicker/datepicker-trigger.d.ts +22 -5
- package/datepicker/datepicker.d.ts +4 -3
- package/datepicker/time.d.ts +2 -2
- package/dialog/dialog.d.ts +1 -1
- package/drag/drag.d.ts +1 -2
- package/fesm2022/ngbase-adk-a11y.mjs +29 -26
- package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
- package/fesm2022/ngbase-adk-accordion.mjs +16 -3
- package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
- package/fesm2022/ngbase-adk-autocomplete.mjs +23 -52
- package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
- package/fesm2022/ngbase-adk-avatar.mjs +2 -2
- package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
- package/fesm2022/ngbase-adk-breadcrumb.mjs +2 -2
- package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngbase-adk-carousel.mjs +7 -7
- package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
- package/fesm2022/ngbase-adk-checkbox.mjs +8 -6
- package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
- package/fesm2022/ngbase-adk-chip.mjs +4 -2
- package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-datepicker.mjs +187 -350
- package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
- package/fesm2022/ngbase-adk-dialog.mjs +14 -15
- package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
- package/fesm2022/ngbase-adk-drag.mjs +1 -2
- package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
- package/fesm2022/ngbase-adk-form-field.mjs +2 -156
- package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
- package/fesm2022/ngbase-adk-list.mjs +2 -2
- package/fesm2022/ngbase-adk-list.mjs.map +1 -1
- package/fesm2022/ngbase-adk-mask.mjs +5 -3
- package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
- package/fesm2022/ngbase-adk-menu.mjs +34 -34
- package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
- package/fesm2022/ngbase-adk-otp.mjs +164 -0
- package/fesm2022/ngbase-adk-otp.mjs.map +1 -0
- package/fesm2022/ngbase-adk-pagination.mjs +10 -67
- package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
- package/fesm2022/ngbase-adk-popover.mjs +434 -556
- package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
- package/fesm2022/ngbase-adk-portal.mjs +5 -10
- package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
- package/fesm2022/ngbase-adk-radio.mjs +8 -19
- package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
- package/fesm2022/ngbase-adk-resizable.mjs +10 -43
- package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
- package/fesm2022/ngbase-adk-select.mjs +87 -185
- package/fesm2022/ngbase-adk-select.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sheet.mjs +95 -0
- package/fesm2022/ngbase-adk-sheet.mjs.map +1 -0
- package/fesm2022/ngbase-adk-sidenav.mjs +2 -2
- package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
- package/fesm2022/ngbase-adk-slider.mjs +12 -23
- package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sonner.mjs +13 -63
- package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
- package/fesm2022/ngbase-adk-stepper.mjs +16 -114
- package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
- package/fesm2022/ngbase-adk-switch.mjs +2 -2
- package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
- package/fesm2022/ngbase-adk-table.mjs +17 -35
- package/fesm2022/ngbase-adk-table.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tabs.mjs +14 -94
- package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
- package/fesm2022/ngbase-adk-test.mjs +11 -1
- package/fesm2022/ngbase-adk-test.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tooltip.mjs +49 -39
- package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tour.mjs +3 -3
- package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tree.mjs +11 -43
- package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
- package/fesm2022/ngbase-adk-utils.mjs +12 -9
- package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
- package/form-field/public-api.d.ts +0 -1
- package/mask/mask.d.ts +1 -2
- package/menu/menu-trigger.d.ts +3 -3
- package/menu/menu.d.ts +13 -7
- package/otp/index.d.ts +5 -0
- package/{form-field → otp}/otp.d.ts +1 -1
- package/otp/public-api.d.ts +1 -0
- package/package.json +27 -19
- package/pagination/pagination.d.ts +7 -3
- package/popover/base-popover.service.d.ts +1 -1
- package/popover/popover-arrow.ng.d.ts +34 -0
- package/popover/popover.d.ts +17 -7
- package/popover/popover.service.d.ts +5 -4
- package/popover/public-api.d.ts +1 -0
- package/popover/utils.d.ts +32 -48
- package/portal/dialog-ref.d.ts +0 -1
- package/portal/portal-base.service.d.ts +3 -3
- package/portal/portal-close.directive.d.ts +3 -2
- package/radio/radio.d.ts +5 -1
- package/resizable/resizable-group.d.ts +2 -2
- package/resizable/resizable.d.ts +2 -2
- package/select/option-group.d.ts +3 -3
- package/select/option.d.ts +1 -1
- package/select/select-base.d.ts +8 -6
- package/select/select.d.ts +6 -3
- package/sheet/index.d.ts +5 -0
- package/sheet/public-api.d.ts +2 -0
- package/sheet/sheet.d.ts +26 -0
- package/sheet/sheet.service.d.ts +13 -0
- package/sidenav/public-api.d.ts +1 -1
- package/sidenav/sidenav.d.ts +1 -1
- package/slider/public-api.d.ts +1 -1
- package/slider/slider.d.ts +6 -5
- package/sonner/sonner.d.ts +2 -1
- package/stepper/animation.d.ts +1 -1
- package/stepper/step.d.ts +1 -1
- package/stepper/stepper.d.ts +2 -2
- package/switch/switch.d.ts +1 -1
- package/table/body-row.d.ts +3 -3
- package/table/head-row.d.ts +3 -3
- package/table/table.d.ts +3 -3
- package/tabs/tab-group.d.ts +4 -4
- package/tabs/tab.d.ts +2 -2
- package/test/utils.d.ts +19 -3
- package/tooltip/public-api.d.ts +1 -1
- package/tooltip/tooltip.d.ts +5 -1
- package/tooltip/tooltip.directive.d.ts +1 -1
- package/tooltip/tooltip.service.d.ts +4 -2
- package/tour/tour.service.d.ts +3 -4
- package/tree/public-api.d.ts +2 -2
- package/tree/tree-node.d.ts +2 -2
- package/tree/tree.d.ts +2 -2
- package/utils/utils.d.ts +5 -4
- package/schematics/collection.json +0 -15
- package/schematics/components/files/accordion/accordion.ts.template +0 -55
- package/schematics/components/files/accordion/index.ts.template +0 -5
- package/schematics/components/files/alert/alert.ts.template +0 -62
- package/schematics/components/files/alert/index.ts.template +0 -1
- package/schematics/components/files/autocomplete/autocomplete.ts.template +0 -48
- package/schematics/components/files/autocomplete/index.ts.template +0 -5
- package/schematics/components/files/avatar/avatar.ts.template +0 -31
- package/schematics/components/files/avatar/index.ts.template +0 -1
- package/schematics/components/files/badge/badge.ts.template +0 -11
- package/schematics/components/files/badge/index.ts.template +0 -1
- package/schematics/components/files/breadcrumb/breadcrumb.ts.template +0 -49
- package/schematics/components/files/breadcrumb/index.ts.template +0 -1
- package/schematics/components/files/button/button.ts.template +0 -29
- package/schematics/components/files/button/index.ts.template +0 -5
- package/schematics/components/files/card/card.ts.template +0 -11
- package/schematics/components/files/card/index.ts.template +0 -5
- package/schematics/components/files/carousel/carousel.ts.template +0 -44
- package/schematics/components/files/carousel/index.ts.template +0 -1
- package/schematics/components/files/checkbox/checkbox.ts.template +0 -46
- package/schematics/components/files/checkbox/focus-style.directive.ts.template +0 -12
- package/schematics/components/files/checkbox/index.ts.template +0 -6
- package/schematics/components/files/chip/chip.ts.template +0 -36
- package/schematics/components/files/chip/index.ts.template +0 -1
- package/schematics/components/files/color-picker/color-picker.ts.template +0 -104
- package/schematics/components/files/color-picker/index.ts.template +0 -5
- package/schematics/components/files/command/command.ts.template +0 -82
- package/schematics/components/files/command/index.ts.template +0 -1
- package/schematics/components/files/datepicker/calendar.ts.template +0 -117
- package/schematics/components/files/datepicker/datepicker-trigger.ts.template +0 -27
- package/schematics/components/files/datepicker/datepicker.ts.template +0 -28
- package/schematics/components/files/datepicker/index.ts.template +0 -3
- package/schematics/components/files/datepicker/time.ts.template +0 -46
- package/schematics/components/files/dialog/dialog.ts.template +0 -89
- package/schematics/components/files/dialog/index.ts.template +0 -5
- package/schematics/components/files/drawer/drawer.ts.template +0 -104
- package/schematics/components/files/drawer/index.ts.template +0 -5
- package/schematics/components/files/form-field/index.ts.template +0 -7
- package/schematics/components/files/form-field/input-style.directive.ts.template +0 -11
- package/schematics/components/files/form-field/input.ts.template +0 -100
- package/schematics/components/files/form-field/otp.ts.template +0 -37
- package/schematics/components/files/hover-card/hover-card.ts.template +0 -13
- package/schematics/components/files/hover-card/index.ts.template +0 -5
- package/schematics/components/files/icon/icon.ts.template +0 -16
- package/schematics/components/files/icon/index.ts.template +0 -1
- package/schematics/components/files/inline-edit/index.ts.template +0 -1
- package/schematics/components/files/inline-edit/inline-edit.ts.template +0 -24
- package/schematics/components/files/keys/index.ts.template +0 -5
- package/schematics/components/files/keys/key.ts.template +0 -35
- package/schematics/components/files/list/index.ts.template +0 -5
- package/schematics/components/files/list/list.ts.template +0 -28
- package/schematics/components/files/mask/index.ts.template +0 -1
- package/schematics/components/files/mask/mask.ts.template +0 -8
- package/schematics/components/files/menu/context-menu.ts.template +0 -14
- package/schematics/components/files/menu/index.ts.template +0 -8
- package/schematics/components/files/menu/mention.ts.template +0 -14
- package/schematics/components/files/menu/menu.ts.template +0 -37
- package/schematics/components/files/menu/navigation-menu.ts.template +0 -8
- package/schematics/components/files/pagination/index.ts.template +0 -1
- package/schematics/components/files/pagination/pagination.ts.template +0 -71
- package/schematics/components/files/picasa/index.ts.template +0 -1
- package/schematics/components/files/picasa/picasa-base.component.ts.template +0 -80
- package/schematics/components/files/picasa/picasa.component.ts.template +0 -57
- package/schematics/components/files/picasa/picasa.directive.ts.template +0 -41
- package/schematics/components/files/picasa/picase.service.ts.template +0 -24
- package/schematics/components/files/popover/index.ts.template +0 -1
- package/schematics/components/files/popover/popover.ts.template +0 -87
- package/schematics/components/files/progress/index.ts.template +0 -5
- package/schematics/components/files/progress/progress.ts.template +0 -14
- package/schematics/components/files/radio/index.ts.template +0 -5
- package/schematics/components/files/radio/radio.ts.template +0 -40
- package/schematics/components/files/resizable/index.ts.template +0 -5
- package/schematics/components/files/resizable/resizable.ts.template +0 -56
- package/schematics/components/files/scroll-area/index.ts.template +0 -1
- package/schematics/components/files/scroll-area/scroll-area.ts.template +0 -40
- package/schematics/components/files/select/index.ts.template +0 -8
- package/schematics/components/files/select/list-selection.ts.template +0 -15
- package/schematics/components/files/select/option.ts.template +0 -34
- package/schematics/components/files/select/select-input.ts.template +0 -21
- package/schematics/components/files/select/select.ts.template +0 -96
- package/schematics/components/files/selectable/index.ts.template +0 -1
- package/schematics/components/files/selectable/selectable.ts.template +0 -34
- package/schematics/components/files/separator/index.ts.template +0 -5
- package/schematics/components/files/separator/separator.ts.template +0 -19
- package/schematics/components/files/sheet/index.ts.template +0 -5
- package/schematics/components/files/sheet/sheet.ts.template +0 -134
- package/schematics/components/files/sidenav/index.ts.template +0 -1
- package/schematics/components/files/sidenav/sidenav.ts.template +0 -48
- package/schematics/components/files/skeleton/index.ts.template +0 -1
- package/schematics/components/files/skeleton/skeleton.ts.template +0 -15
- package/schematics/components/files/slider/index.ts.template +0 -5
- package/schematics/components/files/slider/slider.ts.template +0 -42
- package/schematics/components/files/sonner/index.ts.template +0 -5
- package/schematics/components/files/sonner/sonner.ts.template +0 -58
- package/schematics/components/files/spinner/index.ts.template +0 -1
- package/schematics/components/files/spinner/spinner.ts.template +0 -79
- package/schematics/components/files/stepper/index.ts.template +0 -1
- package/schematics/components/files/stepper/stepper.ts.template +0 -88
- package/schematics/components/files/switch/index.ts.template +0 -5
- package/schematics/components/files/switch/switch.ts.template +0 -29
- package/schematics/components/files/table/body-cell.ts.template +0 -19
- package/schematics/components/files/table/body-row.ts.template +0 -21
- package/schematics/components/files/table/column.ts.template +0 -8
- package/schematics/components/files/table/head-cell.ts.template +0 -19
- package/schematics/components/files/table/head-row.ts.template +0 -27
- package/schematics/components/files/table/index.ts.template +0 -26
- package/schematics/components/files/table/table.ts.template +0 -20
- package/schematics/components/files/tabs/index.ts.template +0 -5
- package/schematics/components/files/tabs/tab.ts.template +0 -89
- package/schematics/components/files/theme/index.ts.template +0 -2
- package/schematics/components/files/theme/theme-button.component.ts.template +0 -26
- package/schematics/components/files/theme/theme.component.ts.template +0 -165
- package/schematics/components/files/theme/theme.service.ts.template +0 -44
- package/schematics/components/files/toggle/index.ts.template +0 -5
- package/schematics/components/files/toggle/toggle.ts.template +0 -13
- package/schematics/components/files/toggle-group/index.ts.template +0 -5
- package/schematics/components/files/toggle-group/toggle-group.ts.template +0 -25
- package/schematics/components/files/tooltip/index.ts.template +0 -5
- package/schematics/components/files/tooltip/tooltip.ts.template +0 -40
- package/schematics/components/files/tour/index.ts.template +0 -3
- package/schematics/components/files/tour/tour-step.ts.template +0 -8
- package/schematics/components/files/tour/tour.service.ts.template +0 -7
- package/schematics/components/files/tour/tour.ts.template +0 -8
- package/schematics/components/files/tree/index.ts.template +0 -1
- package/schematics/components/files/tree/tree.ts.template +0 -66
- package/schematics/components/index.d.ts +0 -3
- package/schematics/components/index.js +0 -17
- package/schematics/components/index.js.map +0 -1
- package/schematics/components/index.ts +0 -29
- package/schematics/components/schema.d.ts +0 -6
- package/schematics/components/schema.js +0 -3
- package/schematics/components/schema.js.map +0 -1
- package/schematics/components/schema.json +0 -137
- package/schematics/components/schema.ts +0 -6
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
2
|
-
import { FormsModule } from '@angular/forms';
|
|
3
|
-
import { RouterLink } from '@angular/router';
|
|
4
|
-
import { AccessibleGroup, AccessibleItem, Autofocus } from '@ngbase/adk/a11y';
|
|
5
|
-
import { DialogRef } from '@ngbase/adk/portal';
|
|
6
|
-
import { filterFunction, uniqueId } from '@ngbase/adk/utils';
|
|
7
|
-
import { List } from '<%= basepath %>/list';
|
|
8
|
-
|
|
9
|
-
export interface CommandGroup {
|
|
10
|
-
name: string;
|
|
11
|
-
items: CommandItem[];
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface CommandItem {
|
|
15
|
-
name: string;
|
|
16
|
-
link: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
@Component({
|
|
20
|
-
selector: '<%= name %>-command',
|
|
21
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
22
|
-
imports: [FormsModule, List, AccessibleGroup, AccessibleItem, Autofocus, RouterLink],
|
|
23
|
-
template: `
|
|
24
|
-
<div ngbAccessibleGroup [ayId]="ayId" [isPopup]="true" class="static w-full">
|
|
25
|
-
<input
|
|
26
|
-
ngbAutofocus
|
|
27
|
-
[(ngModel)]="filter.search"
|
|
28
|
-
type="text"
|
|
29
|
-
placeholder="Search for apps and commands"
|
|
30
|
-
class="sticky -top-4 w-full border-b bg-foreground p-4 outline-none"
|
|
31
|
-
/>
|
|
32
|
-
@for (group of filter.filteredList(); track group.name) {
|
|
33
|
-
<h4 class="mx-4 my-2 text-sm text-gray-500">{{ group.name }}</h4>
|
|
34
|
-
<div class="flex flex-col px-2">
|
|
35
|
-
@for (item of group.items; track item.name) {
|
|
36
|
-
<a
|
|
37
|
-
<%= name %>List
|
|
38
|
-
class="w-full"
|
|
39
|
-
[ayId]="ayId"
|
|
40
|
-
[routerLink]="item.link || null"
|
|
41
|
-
(click)="close()"
|
|
42
|
-
>
|
|
43
|
-
<svg
|
|
44
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
45
|
-
width="24"
|
|
46
|
-
height="24"
|
|
47
|
-
viewBox="0 0 24 24"
|
|
48
|
-
fill="none"
|
|
49
|
-
stroke="currentColor"
|
|
50
|
-
stroke-width="2"
|
|
51
|
-
stroke-linecap="round"
|
|
52
|
-
stroke-linejoin="round"
|
|
53
|
-
class="mr-2"
|
|
54
|
-
>
|
|
55
|
-
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
|
|
56
|
-
</svg>
|
|
57
|
-
<span>{{ item.name }}</span>
|
|
58
|
-
</a>
|
|
59
|
-
}
|
|
60
|
-
</div>
|
|
61
|
-
}
|
|
62
|
-
</div>
|
|
63
|
-
`,
|
|
64
|
-
host: {
|
|
65
|
-
class: 'block -m-4',
|
|
66
|
-
},
|
|
67
|
-
})
|
|
68
|
-
export class Command {
|
|
69
|
-
private dialogRef = inject<DialogRef<CommandGroup[]>>(DialogRef);
|
|
70
|
-
|
|
71
|
-
readonly ayId = uniqueId();
|
|
72
|
-
|
|
73
|
-
readonly filter = filterFunction<CommandGroup, CommandItem>(this.dialogRef.data!, {
|
|
74
|
-
filter: item => item.name,
|
|
75
|
-
key: 'items',
|
|
76
|
-
childrenFilter: item => item.items,
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
close() {
|
|
80
|
-
this.dialogRef.close();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './command';
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { NgClass } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
-
import {
|
|
4
|
-
CalendarBtn,
|
|
5
|
-
CalendarDayBtn,
|
|
6
|
-
CalendarMonthBtn,
|
|
7
|
-
CalendarTitle,
|
|
8
|
-
CalendarYearBtn,
|
|
9
|
-
NgbCalendar,
|
|
10
|
-
provideCalendar,
|
|
11
|
-
} from '@ngbase/adk/datepicker';
|
|
12
|
-
import { Button } from '<%= basepath %>/button';
|
|
13
|
-
import { Icon } from '<%= basepath %>/icon';
|
|
14
|
-
import { provideIcons } from '@ng-icons/core';
|
|
15
|
-
import { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';
|
|
16
|
-
import { TimePicker } from './time';
|
|
17
|
-
|
|
18
|
-
@Component({
|
|
19
|
-
selector: '<%= name %>-calendar',
|
|
20
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
21
|
-
providers: [provideCalendar(Calendar)],
|
|
22
|
-
viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],
|
|
23
|
-
imports: [
|
|
24
|
-
NgClass,
|
|
25
|
-
Button,
|
|
26
|
-
Icon,
|
|
27
|
-
TimePicker,
|
|
28
|
-
CalendarBtn,
|
|
29
|
-
CalendarTitle,
|
|
30
|
-
CalendarYearBtn,
|
|
31
|
-
CalendarMonthBtn,
|
|
32
|
-
CalendarDayBtn,
|
|
33
|
-
],
|
|
34
|
-
template: `
|
|
35
|
-
<div class="mb-2 flex items-center justify-between">
|
|
36
|
-
<button ngbCalendarBtn="left" <%= name %>Button="outline" class="h-6 w-6 rounded-md !px-0">
|
|
37
|
-
<<%= name %>-icon [name]="dir.isRtl() ? 'lucideChevronRight' : 'lucideChevronLeft'" />
|
|
38
|
-
</button>
|
|
39
|
-
<button ngbCalendarTitle <%= name %>Button="ghost" class="small rounded-md">
|
|
40
|
-
{{ title() }}
|
|
41
|
-
</button>
|
|
42
|
-
<button ngbCalendarBtn="right" <%= name %>Button="outline" class="h-6 w-6 rounded-md !px-0">
|
|
43
|
-
<<%= name %>-icon [name]="dir.isRtl() ? 'lucideChevronLeft' : 'lucideChevronRight'" />
|
|
44
|
-
</button>
|
|
45
|
-
</div>
|
|
46
|
-
|
|
47
|
-
@if (datePicker.showType() === 'year') {
|
|
48
|
-
<div class="grid grid-cols-3">
|
|
49
|
-
@for (year of years(); track year.year) {
|
|
50
|
-
<button
|
|
51
|
-
[ngbCalYearBtn]="year"
|
|
52
|
-
#yearBtn="ngbCalYearBtn"
|
|
53
|
-
class="items-center justify-center rounded-md py-2 h-9 w-[84px] {{
|
|
54
|
-
year.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
|
|
55
|
-
}}"
|
|
56
|
-
[ngClass]="{
|
|
57
|
-
'border bg-muted-background': yearBtn.selected(),
|
|
58
|
-
'!bg-primary text-foreground': yearBtn.active(),
|
|
59
|
-
}"
|
|
60
|
-
>
|
|
61
|
-
{{ year.year }}
|
|
62
|
-
</button>
|
|
63
|
-
}
|
|
64
|
-
</div>
|
|
65
|
-
} @else if (datePicker.showType() === 'month') {
|
|
66
|
-
<div class="grid grid-cols-3">
|
|
67
|
-
@for (month of months(); track month.value) {
|
|
68
|
-
<button
|
|
69
|
-
[ngbCalMonthBtn]="month"
|
|
70
|
-
#monthBtn="ngbCalMonthBtn"
|
|
71
|
-
class="items-center justify-center rounded-md py-2 h-9 w-[84px] {{
|
|
72
|
-
month.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
|
|
73
|
-
}}"
|
|
74
|
-
[ngClass]="{
|
|
75
|
-
'border bg-muted-background': monthBtn.selected(),
|
|
76
|
-
'!bg-primary text-foreground': monthBtn.active(),
|
|
77
|
-
}"
|
|
78
|
-
>
|
|
79
|
-
{{ month.name }}
|
|
80
|
-
</button>
|
|
81
|
-
}
|
|
82
|
-
</div>
|
|
83
|
-
} @else {
|
|
84
|
-
<div class="day-names grid grid-cols-7">
|
|
85
|
-
@for (dayName of dayNames; track dayName) {
|
|
86
|
-
<div class="p-1 text-center text-muted">{{ dayName }}</div>
|
|
87
|
-
}
|
|
88
|
-
</div>
|
|
89
|
-
<div class="grid grid-cols-7 gap-y-2">
|
|
90
|
-
@for (day of getDaysArray(); track day.day + '-' + day.mon) {
|
|
91
|
-
<button
|
|
92
|
-
#days="ngbCalDayBtn"
|
|
93
|
-
[ngbCalDayBtn]="day"
|
|
94
|
-
class="mx-auto flex h-9 w-9 items-center justify-center text-center {{
|
|
95
|
-
day.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
|
|
96
|
-
}}"
|
|
97
|
-
[ngClass]="{
|
|
98
|
-
'bg-muted-background': days.selected(),
|
|
99
|
-
'opacity-40': days.dummy(),
|
|
100
|
-
'!bg-primary text-foreground': days.active(),
|
|
101
|
-
}"
|
|
102
|
-
>
|
|
103
|
-
{{ day.day }}
|
|
104
|
-
</button>
|
|
105
|
-
}
|
|
106
|
-
</div>
|
|
107
|
-
@if (datePicker.time() && datePicker.range()) {
|
|
108
|
-
<<%= name %>-time class="mt-5 w-full" [(value)]="time1" (valueChange)="timeChanged(0, time1()!)" />
|
|
109
|
-
<<%= name %>-time class="mt-5 w-full" [(value)]="time2" (valueChange)="timeChanged(1, time2()!)" />
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
`,
|
|
113
|
-
host: {
|
|
114
|
-
class: 'inline-flex flex-col min-h-[18.75rem] p-2 w-full',
|
|
115
|
-
},
|
|
116
|
-
})
|
|
117
|
-
export class Calendar<D> extends NgbCalendar<D> {}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import { NgbDatepickerTrigger, registerDatePicker } from '@ngbase/adk/datepicker';
|
|
3
|
-
import { DatePicker } from './datepicker';
|
|
4
|
-
|
|
5
|
-
@Directive({
|
|
6
|
-
selector: '[<%= name %>DatepickerTrigger]',
|
|
7
|
-
providers: [registerDatePicker(DatePicker)],
|
|
8
|
-
hostDirectives: [
|
|
9
|
-
{
|
|
10
|
-
directive: NgbDatepickerTrigger,
|
|
11
|
-
inputs: [
|
|
12
|
-
'noOfCalendars',
|
|
13
|
-
'range',
|
|
14
|
-
'time',
|
|
15
|
-
'format',
|
|
16
|
-
'fieldFormat',
|
|
17
|
-
'dateFilter',
|
|
18
|
-
'pickerType',
|
|
19
|
-
'pickerTemplate',
|
|
20
|
-
],
|
|
21
|
-
},
|
|
22
|
-
],
|
|
23
|
-
host: {
|
|
24
|
-
class: 'cursor-pointer hover:bg-muted-background',
|
|
25
|
-
},
|
|
26
|
-
})
|
|
27
|
-
export class DatepickerTrigger<D> {}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
-
import { DatepickerGroup, NgbDatePicker, provideDatePicker } from '@ngbase/adk/datepicker';
|
|
4
|
-
import { RangePipe } from '@ngbase/adk/utils';
|
|
5
|
-
import { Calendar } from './calendar';
|
|
6
|
-
|
|
7
|
-
@Component({
|
|
8
|
-
selector: '<%= name %>-date-picker',
|
|
9
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
-
providers: [provideDatePicker(DatePicker)],
|
|
11
|
-
imports: [Calendar, RangePipe, NgTemplateOutlet, DatepickerGroup],
|
|
12
|
-
template: `
|
|
13
|
-
<div class="flex" ngbDatepickerGroup>
|
|
14
|
-
@for (no of noOfCalendar() | range; track no) {
|
|
15
|
-
<<%= name %>-calendar [first]="$first" [last]="$last" [index]="$index" />
|
|
16
|
-
}
|
|
17
|
-
</div>
|
|
18
|
-
@if (template()) {
|
|
19
|
-
<div class="px-2 pb-2">
|
|
20
|
-
<ng-container *ngTemplateOutlet="template()" />
|
|
21
|
-
</div>
|
|
22
|
-
}
|
|
23
|
-
`,
|
|
24
|
-
host: {
|
|
25
|
-
class: 'inline-block',
|
|
26
|
-
},
|
|
27
|
-
})
|
|
28
|
-
export class DatePicker<D> extends NgbDatePicker<D> {}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { NgbTimeInput, NgbTimePicker, provideTimePicker } from '@ngbase/adk/datepicker';
|
|
3
|
-
import { Button } from '<%= basepath %>/button';
|
|
4
|
-
|
|
5
|
-
@Component({
|
|
6
|
-
selector: '<%= name %>-time',
|
|
7
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8
|
-
providers: [provideTimePicker(TimePicker)],
|
|
9
|
-
imports: [Button, NgbTimeInput],
|
|
10
|
-
template: `
|
|
11
|
-
<input
|
|
12
|
-
ngbTimeInput="hours"
|
|
13
|
-
[(value)]="hours"
|
|
14
|
-
(valueChange)="updateValue()"
|
|
15
|
-
class="w-7 px-1 text-center font-semibold focus:bg-muted-background"
|
|
16
|
-
/>
|
|
17
|
-
<span>:</span>
|
|
18
|
-
<input
|
|
19
|
-
ngbTimeInput="minutes"
|
|
20
|
-
[(value)]="minutes"
|
|
21
|
-
(valueChange)="updateValue()"
|
|
22
|
-
class="w-7 px-1 text-center font-semibold focus:bg-muted-background"
|
|
23
|
-
/>
|
|
24
|
-
<span>:</span>
|
|
25
|
-
<input
|
|
26
|
-
ngbTimeInput="seconds"
|
|
27
|
-
[(value)]="seconds"
|
|
28
|
-
(valueChange)="updateValue()"
|
|
29
|
-
class="w-7 px-1 text-center font-semibold focus:bg-muted-background"
|
|
30
|
-
/>
|
|
31
|
-
@if (!is24()) {
|
|
32
|
-
<div class="ml-1 flex gap-2">
|
|
33
|
-
<button [<%= name %>Button]="am() ? 'primary' : 'ghost'" class="small" (click)="changeAm(true)">
|
|
34
|
-
AM
|
|
35
|
-
</button>
|
|
36
|
-
<button [<%= name %>Button]="!am() ? 'primary' : 'ghost'" class="small" (click)="changeAm(false)">
|
|
37
|
-
PM
|
|
38
|
-
</button>
|
|
39
|
-
</div>
|
|
40
|
-
}
|
|
41
|
-
`,
|
|
42
|
-
host: {
|
|
43
|
-
class: 'inline-flex gap-1 items-center justify-center',
|
|
44
|
-
},
|
|
45
|
-
})
|
|
46
|
-
export class TimePicker extends NgbTimePicker {}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
NgbDialogBackdrop,
|
|
4
|
-
NgbDialogContainer,
|
|
5
|
-
NgbDialogMain,
|
|
6
|
-
ngbDialogPortal,
|
|
7
|
-
provideDialog,
|
|
8
|
-
NgbDialog,
|
|
9
|
-
NgbDialogClose,
|
|
10
|
-
} from '@ngbase/adk/dialog';
|
|
11
|
-
import { DragMove } from '@ngbase/adk/drag';
|
|
12
|
-
import { Button } from '<%= basepath %>/button';
|
|
13
|
-
import { Icon } from '<%= basepath %>/icon';
|
|
14
|
-
import { provideIcons } from '@ng-icons/core';
|
|
15
|
-
import { lucideX } from '@ng-icons/lucide';
|
|
16
|
-
|
|
17
|
-
@Component({
|
|
18
|
-
selector: '<%= name %>-dialog',
|
|
19
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
20
|
-
providers: [provideDialog(DialogContainer)],
|
|
21
|
-
viewProviders: [provideIcons({ lucideX })],
|
|
22
|
-
imports: [Button, Icon, DragMove, NgbDialogMain, NgbDialogBackdrop],
|
|
23
|
-
template: `
|
|
24
|
-
<div class="pointer-events-none flex h-full items-center justify-center">
|
|
25
|
-
<div
|
|
26
|
-
#myDialog
|
|
27
|
-
ngbDialogMain
|
|
28
|
-
[@viewAnimation]
|
|
29
|
-
class="{{
|
|
30
|
-
'pointer-events-auto relative flex max-w-[100vw] flex-col overflow-hidden border bg-foreground shadow-lg' +
|
|
31
|
-
(options().fullWindow
|
|
32
|
-
? ' h-screen w-screen border-none'
|
|
33
|
-
: ' max-w-[calc(100vw-30px)] rounded-lg')
|
|
34
|
-
}}"
|
|
35
|
-
>
|
|
36
|
-
@if (!isHideHeader) {
|
|
37
|
-
<div
|
|
38
|
-
class="flex items-center justify-between border-b px-4 py-2"
|
|
39
|
-
ngbDragMove
|
|
40
|
-
[target]="myDialog"
|
|
41
|
-
>
|
|
42
|
-
<h2 class="flex-1 text-base font-bold">{{ options().title }}</h2>
|
|
43
|
-
@if (!options().disableClose) {
|
|
44
|
-
<button <%= name %>Button="ghost" class="-mr-2 !p-2" (click)="close()">
|
|
45
|
-
<<%= name %>-icon name="lucideX" />
|
|
46
|
-
</button>
|
|
47
|
-
}
|
|
48
|
-
</div>
|
|
49
|
-
}
|
|
50
|
-
<div class="h-full overflow-auto p-4">
|
|
51
|
-
<ng-container #contentContainer />
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
@if (showBackdrop()) {
|
|
55
|
-
<div
|
|
56
|
-
class="pointer-events-auto absolute top-0 -z-10 h-full w-full bg-black bg-opacity-30"
|
|
57
|
-
ngbDialogBackdrop
|
|
58
|
-
[@fadeAnimation]
|
|
59
|
-
></div>
|
|
60
|
-
}
|
|
61
|
-
</div>
|
|
62
|
-
`,
|
|
63
|
-
host: {
|
|
64
|
-
class: 'fixed block top-0 bottom-0 left-0 right-0 overflow-auto pointer-events-none z-p',
|
|
65
|
-
},
|
|
66
|
-
})
|
|
67
|
-
export class DialogContainer extends NgbDialogContainer {}
|
|
68
|
-
|
|
69
|
-
@Directive({
|
|
70
|
-
selector: '[<%= name %>DialogClose]',
|
|
71
|
-
hostDirectives: [NgbDialogClose],
|
|
72
|
-
})
|
|
73
|
-
export class DialogClose {}
|
|
74
|
-
|
|
75
|
-
@Component({
|
|
76
|
-
selector: '[<%= name %>DialogTitle]',
|
|
77
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
78
|
-
template: `<ng-content />`,
|
|
79
|
-
host: {
|
|
80
|
-
class: 'text-lg font-semibold',
|
|
81
|
-
},
|
|
82
|
-
})
|
|
83
|
-
export class DialogTitle {}
|
|
84
|
-
|
|
85
|
-
export function dialogPortal() {
|
|
86
|
-
return ngbDialogPortal(DialogContainer);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export type Dialog = NgbDialog;
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
2
|
-
import {
|
|
3
|
-
ChangeDetectionStrategy,
|
|
4
|
-
Component,
|
|
5
|
-
ViewContainerRef,
|
|
6
|
-
afterNextRender,
|
|
7
|
-
viewChild,
|
|
8
|
-
} from '@angular/core';
|
|
9
|
-
import { FocusTrap } from '@ngbase/adk/a11y';
|
|
10
|
-
import { BaseDialog, basePortal, DialogInput, DialogOptions } from '@ngbase/adk/portal';
|
|
11
|
-
import { createHostAnimation, fadeAnimation } from '@ngbase/adk/utils';
|
|
12
|
-
|
|
13
|
-
@Component({
|
|
14
|
-
selector: '<%= name %>-drawer',
|
|
15
|
-
template: `
|
|
16
|
-
<div class="pointer-events-none flex h-full flex-col justify-end">
|
|
17
|
-
<div
|
|
18
|
-
class="pointer-events-auto flex max-h-[90vh] flex-col overflow-hidden rounded-tl-2xl rounded-tr-2xl border-t bg-foreground p-4 shadow-2xl"
|
|
19
|
-
[@bottomAnimation]
|
|
20
|
-
>
|
|
21
|
-
<button class="mx-auto h-2 w-20 rounded-full bg-muted"></button>
|
|
22
|
-
@if (!isHideHeader) {
|
|
23
|
-
<div class="flex h-8 items-center">
|
|
24
|
-
<h2 class="flex-1 font-bold">{{ options.title }}</h2>
|
|
25
|
-
<!-- <button <%= name %>Button (click)="close()" class="mr-1"></button> -->
|
|
26
|
-
</div>
|
|
27
|
-
}
|
|
28
|
-
<div class="h-full overflow-auto">
|
|
29
|
-
<ng-container #myDialog />
|
|
30
|
-
</div>
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
@if (backdropColor) {
|
|
34
|
-
<div
|
|
35
|
-
class="absolute top-0 -z-10 h-full w-full bg-black bg-opacity-30"
|
|
36
|
-
[@fadeAnimation]
|
|
37
|
-
(click)="close()"
|
|
38
|
-
></div>
|
|
39
|
-
}
|
|
40
|
-
`,
|
|
41
|
-
host: {
|
|
42
|
-
class: 'fixed block top-0 bottom-0 left-0 right-0 overflow-hidden z-p',
|
|
43
|
-
'[@parentAnimation]': '',
|
|
44
|
-
'(@parentAnimation.done)': 'animationDone()',
|
|
45
|
-
},
|
|
46
|
-
hostDirectives: [FocusTrap],
|
|
47
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
48
|
-
animations: [
|
|
49
|
-
createHostAnimation(['@bottomAnimation', '@fadeAnimation']),
|
|
50
|
-
trigger('bottomAnimation', [
|
|
51
|
-
state('1', style({ transform: 'none' })),
|
|
52
|
-
state('void', style({ transform: 'translate3d(0, 100%, 0)' })),
|
|
53
|
-
state('0', style({ transform: 'translate3d(0, 100%, 0)' })),
|
|
54
|
-
transition('* => *', animate('200ms ease')),
|
|
55
|
-
]),
|
|
56
|
-
fadeAnimation('200ms'),
|
|
57
|
-
],
|
|
58
|
-
})
|
|
59
|
-
export class DrawerContainer extends BaseDialog {
|
|
60
|
-
myDialog = viewChild('myDialog', { read: ViewContainerRef });
|
|
61
|
-
backdropColor = true;
|
|
62
|
-
options!: DialogOptions;
|
|
63
|
-
classNames = '';
|
|
64
|
-
isHideHeader = false;
|
|
65
|
-
|
|
66
|
-
constructor() {
|
|
67
|
-
super();
|
|
68
|
-
afterNextRender(() => {
|
|
69
|
-
this._afterViewSource.next(this.myDialog()!);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
override setOptions(options: DialogOptions): void {
|
|
74
|
-
this.options = options;
|
|
75
|
-
this.classNames = this.options.classNames?.join(' ') || '';
|
|
76
|
-
this.isHideHeader = this.options.header || false;
|
|
77
|
-
this.backdropColor = this.options.backdropColor || true;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export function drawerPortal() {
|
|
82
|
-
const NAME = 'sheet';
|
|
83
|
-
const base = basePortal(NAME, DrawerContainer);
|
|
84
|
-
|
|
85
|
-
function open<T>(component: DialogInput<T>, opt?: DialogOptions) {
|
|
86
|
-
const { diaRef } = base.open(
|
|
87
|
-
component,
|
|
88
|
-
(comp, options) => {
|
|
89
|
-
comp.instance.setOptions(options);
|
|
90
|
-
},
|
|
91
|
-
opt,
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
const { afterClosed } = diaRef;
|
|
95
|
-
return { afterClosed };
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
function closeAll() {
|
|
99
|
-
base.closeAll();
|
|
100
|
-
}
|
|
101
|
-
return { open, closeAll };
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export type Drawer = ReturnType<typeof drawerPortal>;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import { ɵFocusStyle as FocusStyle } from '<%= basepath %>/checkbox';
|
|
3
|
-
|
|
4
|
-
@Directive({
|
|
5
|
-
selector: '[<%= name %>InputStyle]',
|
|
6
|
-
hostDirectives: [{ directive: FocusStyle, inputs: ['unfocus'] }],
|
|
7
|
-
host: {
|
|
8
|
-
class: 'inline-block rounded-lg bg-foreground px-3 py-2 border font-normal min-h-10',
|
|
9
|
-
},
|
|
10
|
-
})
|
|
11
|
-
export class InputStyle {}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ChangeDetectionStrategy,
|
|
3
|
-
Component,
|
|
4
|
-
Directive,
|
|
5
|
-
effect,
|
|
6
|
-
ElementRef,
|
|
7
|
-
inject,
|
|
8
|
-
viewChild,
|
|
9
|
-
} from '@angular/core';
|
|
10
|
-
import {
|
|
11
|
-
InputBase,
|
|
12
|
-
NgbFormField,
|
|
13
|
-
NgbInputError,
|
|
14
|
-
NgbLabel,
|
|
15
|
-
toggleDiv,
|
|
16
|
-
} from '@ngbase/adk/form-field';
|
|
17
|
-
import { InputStyle } from './input-style.directive';
|
|
18
|
-
import { NgbSelectTarget } from '@ngbase/adk/select';
|
|
19
|
-
|
|
20
|
-
@Component({
|
|
21
|
-
selector: '<%= name %>-form-field, [<%= name %>FormField]',
|
|
22
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
23
|
-
hostDirectives: [NgbFormField, NgbSelectTarget],
|
|
24
|
-
imports: [InputStyle],
|
|
25
|
-
template: `
|
|
26
|
-
<ng-content select="[<%= name %>Label]" />
|
|
27
|
-
<ng-content select="[<%= name %>Description]" />
|
|
28
|
-
<div class="flex items-center" #target <%= name %>InputStyle>
|
|
29
|
-
<ng-content select="[<%= name %>InputPrefix]" />
|
|
30
|
-
<ng-content />
|
|
31
|
-
<ng-content select="[<%= name %>InputSuffix]" />
|
|
32
|
-
</div>
|
|
33
|
-
<ng-content select="[<%= name %>Error]" />
|
|
34
|
-
`,
|
|
35
|
-
host: {
|
|
36
|
-
class: 'inline-flex flex-col font-medium mb-2 gap-1',
|
|
37
|
-
},
|
|
38
|
-
})
|
|
39
|
-
export class FormField {
|
|
40
|
-
readonly selectTarget = inject(NgbSelectTarget);
|
|
41
|
-
readonly target = viewChild.required<ElementRef<HTMLDivElement>>('target');
|
|
42
|
-
private _ = effect(() => {
|
|
43
|
-
this.selectTarget.target.set(this.target().nativeElement);
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@Directive({
|
|
48
|
-
selector: '[<%= name %>Input]',
|
|
49
|
-
hostDirectives: [{ directive: InputBase, inputs: ['value'] }],
|
|
50
|
-
host: {
|
|
51
|
-
class: 'focus:outline-none',
|
|
52
|
-
'[class.border-red-500]': 'formField?.hasErrors()',
|
|
53
|
-
},
|
|
54
|
-
})
|
|
55
|
-
export class Input<T = unknown> {
|
|
56
|
-
readonly formField = inject(NgbFormField, { optional: true });
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
@Component({
|
|
60
|
-
selector: '[<%= name %>Label]',
|
|
61
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
62
|
-
hostDirectives: [NgbLabel],
|
|
63
|
-
template: `<ng-content />`,
|
|
64
|
-
host: {
|
|
65
|
-
class: 'block font-medium mx-0.5',
|
|
66
|
-
},
|
|
67
|
-
})
|
|
68
|
-
export class Label {}
|
|
69
|
-
|
|
70
|
-
@Directive({
|
|
71
|
-
selector: '[<%= name %>Description]',
|
|
72
|
-
host: {
|
|
73
|
-
class: 'text-sm text-muted',
|
|
74
|
-
},
|
|
75
|
-
})
|
|
76
|
-
export class Description {}
|
|
77
|
-
|
|
78
|
-
@Directive({
|
|
79
|
-
selector: '[<%= name %>InputPrefix]',
|
|
80
|
-
})
|
|
81
|
-
export class InputPrefix {}
|
|
82
|
-
|
|
83
|
-
@Component({
|
|
84
|
-
selector: '[<%= name %>Error]',
|
|
85
|
-
hostDirectives: [{ directive: NgbInputError, inputs: ['ngbError: <%= name %>Error'] }],
|
|
86
|
-
template: `<ng-content />`,
|
|
87
|
-
host: {
|
|
88
|
-
class: 'text-red-500 mx-0.5',
|
|
89
|
-
'[@toggleDiv]': 'isInvalid() ? "visible" : "hidden"',
|
|
90
|
-
},
|
|
91
|
-
animations: [toggleDiv],
|
|
92
|
-
})
|
|
93
|
-
export class InputError {
|
|
94
|
-
readonly error = inject(NgbInputError);
|
|
95
|
-
readonly isInvalid = this.error.isInvalid;
|
|
96
|
-
|
|
97
|
-
constructor() {
|
|
98
|
-
this.error.animate.set(true);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { injectDirectionality } from '@ngbase/adk/bidi';
|
|
3
|
-
import { NgbInputOtp, NgbOtpInput, NgbOtpValue, provideInputOtp } from '@ngbase/adk/form-field';
|
|
4
|
-
import { NumberOnly, RangePipe } from '@ngbase/adk/utils';
|
|
5
|
-
import { InputStyle } from './input-style.directive';
|
|
6
|
-
|
|
7
|
-
@Component({
|
|
8
|
-
selector: '<%= name %>-input-otp',
|
|
9
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
-
providers: [provideInputOtp(InputOtp)],
|
|
11
|
-
imports: [InputStyle, RangePipe, NgbOtpInput, NgbOtpValue, NumberOnly],
|
|
12
|
-
template: `
|
|
13
|
-
@for (num of size(); track $index; let l = $last) {
|
|
14
|
-
@for (n of num | range; track n; let i = $index; let ll = $last) {
|
|
15
|
-
<div
|
|
16
|
-
<%= name %>InputStyle
|
|
17
|
-
ngbOtpValue
|
|
18
|
-
class="{{
|
|
19
|
-
'mb-0 aspect-square w-10 rounded-none !px-0 text-center text-base font-semibold data-[disabled]:bg-muted-background/40 data-[disabled]:text-muted data-[focus]:relative' +
|
|
20
|
-
((dir.isRtl() ? ll : i === 0) ? ' !rounded-l-lg' : '') +
|
|
21
|
-
((dir.isRtl() ? i === 0 : ll) ? ' !rounded-r-lg' : '')
|
|
22
|
-
}}"
|
|
23
|
-
></div>
|
|
24
|
-
}
|
|
25
|
-
@if (!l) {
|
|
26
|
-
<div class="px-2">-</div>
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
<input type="text" ngbOtpInput ngbNumberOnly class="selection:bg-transparent" />
|
|
30
|
-
`,
|
|
31
|
-
host: {
|
|
32
|
-
class: 'inline-flex items-center justify-center rounded-lg relative',
|
|
33
|
-
},
|
|
34
|
-
})
|
|
35
|
-
export class InputOtp extends NgbInputOtp {
|
|
36
|
-
readonly dir = injectDirectionality();
|
|
37
|
-
}
|