@ngbase/adk 0.1.2 → 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 +3 -1
- package/autocomplete/autocomplete-input.d.ts +2 -4
- package/autocomplete/autocomplete.d.ts +12 -3
- package/carousel/carousel.d.ts +2 -2
- package/checkbox/checkbox.d.ts +11 -3
- package/checkbox/public-api.d.ts +1 -1
- package/datepicker/datepicker-trigger.d.ts +22 -5
- package/datepicker/datepicker.d.ts +2 -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 +12 -2
- package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
- package/fesm2022/ngbase-adk-autocomplete.mjs +18 -18
- package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
- package/fesm2022/ngbase-adk-carousel.mjs +5 -5
- 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-datepicker.mjs +76 -25
- package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
- package/fesm2022/ngbase-adk-dialog.mjs +3 -3
- 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-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 +22 -7
- package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
- package/fesm2022/ngbase-adk-pagination.mjs +3 -3
- package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
- package/fesm2022/ngbase-adk-popover.mjs +25 -22
- package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
- package/fesm2022/ngbase-adk-portal.mjs +5 -9
- package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
- package/fesm2022/ngbase-adk-radio.mjs +6 -3
- package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
- package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
- package/fesm2022/ngbase-adk-select.mjs +21 -13
- package/fesm2022/ngbase-adk-select.mjs.map +1 -1
- package/fesm2022/ngbase-adk-slider.mjs +4 -1
- package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
- package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
- package/fesm2022/ngbase-adk-table.mjs +8 -6
- package/fesm2022/ngbase-adk-table.mjs.map +1 -1
- 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-tour.mjs +2 -2
- package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
- package/fesm2022/ngbase-adk-utils.mjs +12 -9
- package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
- package/mask/mask.d.ts +1 -2
- package/menu/menu-trigger.d.ts +1 -1
- package/menu/menu.d.ts +8 -2
- package/package.json +11 -11
- package/pagination/pagination.d.ts +3 -3
- package/popover/base-popover.service.d.ts +1 -1
- package/popover/popover.d.ts +5 -4
- 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/select/option.d.ts +1 -1
- package/select/select-base.d.ts +8 -6
- package/select/select.d.ts +5 -2
- package/slider/slider.d.ts +1 -0
- package/table/table.d.ts +2 -2
- package/test/utils.d.ts +19 -3
- package/utils/utils.d.ts +5 -4
- package/schematics/collection.json +0 -15
- package/schematics/components/files/accordion/accordion.ts.template +0 -53
- 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 -44
- 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.ts.template +0 -58
- package/schematics/components/files/datepicker/index.ts.template +0 -2
- package/schematics/components/files/datepicker/time.ts.template +0 -54
- 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/form-field.ts.template +0 -111
- package/schematics/components/files/form-field/index.ts.template +0 -6
- package/schematics/components/files/form-field/input-style.directive.ts.template +0 -11
- 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/otp/index.ts.template +0 -5
- package/schematics/components/files/otp/otp.ts.template +0 -37
- 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 -64
- 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 -35
- 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 -35
- 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 -69
- 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 -35
- package/schematics/components/files/sonner/index.ts.template +0 -5
- package/schematics/components/files/sonner/sonner.ts.template +0 -59
- 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 -92
- 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.service.ts.template +0 -33
- 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 -45
- package/schematics/components/files/tour/index.ts.template +0 -1
- package/schematics/components/files/tour/tour.ts.template +0 -19
- 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 -145
- package/schematics/components/schema.ts +0 -6
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, input } from '@angular/core';
|
|
2
|
-
import { NgbScrollArea, NgbScrollBar, ScrollBarOrientation } from '@ngbase/adk/scroll-area';
|
|
3
|
-
|
|
4
|
-
@Component({
|
|
5
|
-
selector: '<%= name %>-scroll-area',
|
|
6
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
7
|
-
imports: [NgbScrollBar, NgbScrollArea],
|
|
8
|
-
template: `
|
|
9
|
-
<div
|
|
10
|
-
ngbScrollArea
|
|
11
|
-
[alwaysShow]="alwaysShow()"
|
|
12
|
-
[orientation]="orientation()"
|
|
13
|
-
[hideDelay]="hideDelay()"
|
|
14
|
-
class="flex-1"
|
|
15
|
-
>
|
|
16
|
-
<ng-content></ng-content>
|
|
17
|
-
|
|
18
|
-
<div
|
|
19
|
-
ngbScrollBar="vertical"
|
|
20
|
-
class="!right-0.5 rounded bg-black/10 opacity-0 transition-colors duration-150 hover:bg-black/50 data-[active=true]:bg-black/50 data-[visible=true]:opacity-100"
|
|
21
|
-
></div>
|
|
22
|
-
|
|
23
|
-
<div
|
|
24
|
-
ngbScrollBar="horizontal"
|
|
25
|
-
class="!bottom-0.5 rounded bg-black/10 opacity-0 transition-colors duration-150 hover:bg-black/50 data-[active=true]:bg-black/50 data-[visible=true]:opacity-100"
|
|
26
|
-
></div>
|
|
27
|
-
|
|
28
|
-
<!-- Corner piece when both scrollbars are visible -->
|
|
29
|
-
<div class="scroll-area-corner absolute bottom-0 right-0 h-2 w-2 rounded bg-black/10"></div>
|
|
30
|
-
</div>
|
|
31
|
-
`,
|
|
32
|
-
host: {
|
|
33
|
-
class: 'flex flex-col w-full',
|
|
34
|
-
},
|
|
35
|
-
})
|
|
36
|
-
export class ScrollArea {
|
|
37
|
-
readonly alwaysShow = input<boolean>(false);
|
|
38
|
-
readonly orientation = input<ScrollBarOrientation>('both');
|
|
39
|
-
readonly hideDelay = input(1000);
|
|
40
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { provideValueAccessor } from '@ngbase/adk/utils';
|
|
3
|
-
import { SelectBase } from '@ngbase/adk/select';
|
|
4
|
-
|
|
5
|
-
@Component({
|
|
6
|
-
selector: '<%= name %>-list-selection',
|
|
7
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8
|
-
template: `<ng-content />`,
|
|
9
|
-
providers: [provideValueAccessor(ListSelection)],
|
|
10
|
-
})
|
|
11
|
-
export class ListSelection<T> extends SelectBase<T> {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(true);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
2
|
-
import { NgbOption, NgbOptionGroup } from '@ngbase/adk/select';
|
|
3
|
-
import { Checkbox } from '<%= basepath %>/checkbox';
|
|
4
|
-
import { ListStyle } from '<%= basepath %>/list';
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
selector: '<%= name %>-option, [<%= name %>Option]',
|
|
8
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
9
|
-
hostDirectives: [ListStyle, { directive: NgbOption, inputs: ['value', 'disabled', 'ayId'] }],
|
|
10
|
-
imports: [Checkbox],
|
|
11
|
-
template: ` @if (option.multiple()) {
|
|
12
|
-
<<%= name %>-checkbox [checked]="option.checked()" class="!py-0" />
|
|
13
|
-
}
|
|
14
|
-
<ng-content />`,
|
|
15
|
-
host: {
|
|
16
|
-
class: 'outline-none',
|
|
17
|
-
'[class.bg-muted-background]': 'option.active() || option.checked()',
|
|
18
|
-
},
|
|
19
|
-
})
|
|
20
|
-
export class Option<T> {
|
|
21
|
-
readonly option = inject(NgbOption<T>);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
@Component({
|
|
25
|
-
selector: '<%= name %>-option-group, [<%= name %>OptionGroup]',
|
|
26
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
27
|
-
template: `<div class="sticky -top-1 z-10 bg-foreground px-2 py-1.5 text-sm text-muted">
|
|
28
|
-
{{ label() }}
|
|
29
|
-
</div>
|
|
30
|
-
<ng-content />`,
|
|
31
|
-
host: {
|
|
32
|
-
class: 'block',
|
|
33
|
-
},
|
|
34
|
-
})
|
|
35
|
-
export class OptionGroup extends NgbOptionGroup {}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import { NgbSelectInput, NgbSelectTrigger } from '@ngbase/adk/select';
|
|
3
|
-
import { InputStyle } from '<%= basepath %>/form-field';
|
|
4
|
-
|
|
5
|
-
@Directive({
|
|
6
|
-
selector: '[<%= name %>SelectInput]',
|
|
7
|
-
hostDirectives: [
|
|
8
|
-
{ directive: NgbSelectInput, inputs: ['placeholder', 'options', 'filterFn'] },
|
|
9
|
-
InputStyle,
|
|
10
|
-
],
|
|
11
|
-
host: {
|
|
12
|
-
class: 'w-full !m-0 mb-1 !ring-0 !border-0 !border-b rounded-none px-3 z-10',
|
|
13
|
-
},
|
|
14
|
-
})
|
|
15
|
-
export class SelectInput<T> {}
|
|
16
|
-
|
|
17
|
-
@Directive({
|
|
18
|
-
selector: '[<%= name %>SelectTrigger]',
|
|
19
|
-
hostDirectives: [NgbSelectTrigger],
|
|
20
|
-
})
|
|
21
|
-
export class SelectTrigger {}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { Icon } from '<%= basepath %>/icon';
|
|
5
|
-
import { provideIcons } from '@ng-icons/core';
|
|
6
|
-
import { lucideChevronsUpDown } from '@ng-icons/lucide';
|
|
7
|
-
import {
|
|
8
|
-
aliasSelect,
|
|
9
|
-
NgbSelect,
|
|
10
|
-
NgbSelectOption,
|
|
11
|
-
NgbSelectOptionGroup,
|
|
12
|
-
SelectValue,
|
|
13
|
-
} from '@ngbase/adk/select';
|
|
14
|
-
import { Option } from './option';
|
|
15
|
-
import { SelectInput } from './select-input';
|
|
16
|
-
|
|
17
|
-
@Directive({
|
|
18
|
-
selector: '[<%= name %>SelectOption]',
|
|
19
|
-
hostDirectives: [NgbSelectOption],
|
|
20
|
-
})
|
|
21
|
-
export class SelectOption<T> {}
|
|
22
|
-
|
|
23
|
-
@Component({
|
|
24
|
-
selector: '<%= name %>-select',
|
|
25
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
26
|
-
viewProviders: [provideIcons({ lucideChevronsUpDown })],
|
|
27
|
-
providers: [aliasSelect(Select)],
|
|
28
|
-
imports: [
|
|
29
|
-
Icon,
|
|
30
|
-
FormsModule,
|
|
31
|
-
SelectInput,
|
|
32
|
-
Option,
|
|
33
|
-
NgTemplateOutlet,
|
|
34
|
-
SelectValue,
|
|
35
|
-
NgbSelectOptionGroup,
|
|
36
|
-
],
|
|
37
|
-
template: `
|
|
38
|
-
<button
|
|
39
|
-
ngbSelectValue
|
|
40
|
-
[class.opacity-50]="disabled()"
|
|
41
|
-
class="flex min-h-5 w-full items-center gap-1 whitespace-nowrap text-left outline-none"
|
|
42
|
-
>
|
|
43
|
-
<!-- Prefix template -->
|
|
44
|
-
<ng-content select=".select-prefix" />
|
|
45
|
-
|
|
46
|
-
<span class="flex-1 truncate" [class.text-muted]="!cValue()">
|
|
47
|
-
<ng-content select="[<%= name %>SelectTrigger]">
|
|
48
|
-
{{ cValue() || placeholder() }}
|
|
49
|
-
</ng-content>
|
|
50
|
-
</span>
|
|
51
|
-
<<%= name %>-icon name="lucideChevronsUpDown" class="ml-0.5 text-muted" />
|
|
52
|
-
</button>
|
|
53
|
-
|
|
54
|
-
<!-- Options template -->
|
|
55
|
-
<ng-template #optionsTemplate>
|
|
56
|
-
<div class="flex flex-col overflow-hidden">
|
|
57
|
-
<ng-content select="[<%= name %>SelectInput]">
|
|
58
|
-
@if (options().length) {
|
|
59
|
-
<input
|
|
60
|
-
<%= name %>SelectInput
|
|
61
|
-
placeholder="Search options"
|
|
62
|
-
[(ngModel)]="optionsFilter.search"
|
|
63
|
-
[ngModelOptions]="{ standalone: true }"
|
|
64
|
-
/>
|
|
65
|
-
}
|
|
66
|
-
</ng-content>
|
|
67
|
-
<div #optionsGroup ngbSelectOptionGroup class="overflow-auto p-1">
|
|
68
|
-
<div class="h-full" role="listbox" aria-label="Suggestions">
|
|
69
|
-
<ng-content>
|
|
70
|
-
@for (option of optionsFilter.filteredList(); track option; let i = $index) {
|
|
71
|
-
<<%= name %>-option [value]="option" [ayId]="ayId">
|
|
72
|
-
@if (optionTemplate(); as ot) {
|
|
73
|
-
<ng-template
|
|
74
|
-
[ngTemplateOutlet]="ot.template"
|
|
75
|
-
[ngTemplateOutletContext]="{ $implicit: option, index: i }"
|
|
76
|
-
/>
|
|
77
|
-
} @else {
|
|
78
|
-
{{ option }}
|
|
79
|
-
}
|
|
80
|
-
</<%= name %>-option>
|
|
81
|
-
}
|
|
82
|
-
</ng-content>
|
|
83
|
-
</div>
|
|
84
|
-
</div>
|
|
85
|
-
<ng-content select=".select-footer" />
|
|
86
|
-
</div>
|
|
87
|
-
</ng-template>
|
|
88
|
-
`,
|
|
89
|
-
host: {
|
|
90
|
-
class: 'flex cursor-pointer font-medium outline-none',
|
|
91
|
-
'[class.pointer-events-none]': 'disabled()',
|
|
92
|
-
},
|
|
93
|
-
})
|
|
94
|
-
export class Select<T> extends NgbSelect<T> {
|
|
95
|
-
override sideOffset = 16;
|
|
96
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './selectable';
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
2
|
-
import { NgbSelectable, NgbSelectableItem } from '@ngbase/adk/selectable';
|
|
3
|
-
|
|
4
|
-
@Component({
|
|
5
|
-
selector: '<%= name %>-selectable-item, [<%= name %>SelectableItem]',
|
|
6
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
7
|
-
hostDirectives: [{ directive: NgbSelectableItem, inputs: ['value'] }],
|
|
8
|
-
template: `<ng-content />`,
|
|
9
|
-
host: {
|
|
10
|
-
class:
|
|
11
|
-
'flex-1 flex items-center font-medium justify-center px-3 py-1.5 cursor-pointer transition-colors rounded-md whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary',
|
|
12
|
-
'[class]': `selectable.selected() ? 'bg-foreground shadow-md ring-1 ring-border' : 'opacity-60'`,
|
|
13
|
-
},
|
|
14
|
-
})
|
|
15
|
-
export class SelectableItem<T> {
|
|
16
|
-
readonly selectable = inject(NgbSelectableItem);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
@Component({
|
|
20
|
-
selector: '<%= name %>-selectable',
|
|
21
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
22
|
-
template: `<ng-content />`,
|
|
23
|
-
host: {
|
|
24
|
-
class: 'inline-flex relative bg-muted-background rounded-md p-0.5',
|
|
25
|
-
},
|
|
26
|
-
hostDirectives: [
|
|
27
|
-
{
|
|
28
|
-
directive: NgbSelectable,
|
|
29
|
-
inputs: ['activeIndex'],
|
|
30
|
-
outputs: ['activeIndexChange', 'valueChanged'],
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
})
|
|
34
|
-
export class Selectable<T> {}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
@Component({
|
|
4
|
-
selector: '<%= name %>-separator',
|
|
5
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
6
|
-
template: ``,
|
|
7
|
-
host: {
|
|
8
|
-
class: 'bg-border block flex-none',
|
|
9
|
-
'[class]': `vertical() ? 'w-[1px]' : 'h-[1px] w-full'`,
|
|
10
|
-
// '[class.my-1]': `menu`,
|
|
11
|
-
},
|
|
12
|
-
})
|
|
13
|
-
export class Separator {
|
|
14
|
-
vertical = input(false, { transform: booleanAttribute });
|
|
15
|
-
|
|
16
|
-
constructor() {
|
|
17
|
-
// console.log('Separator', this.menu);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { NgStyle } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
-
import { Button } from '<%= basepath %>/button';
|
|
4
|
-
import { Icon } from '<%= basepath %>/icon';
|
|
5
|
-
import { provideIcons } from '@ng-icons/core';
|
|
6
|
-
import { lucideX } from '@ng-icons/lucide';
|
|
7
|
-
import { sideAnimation } from '@ngbase/adk/dialog';
|
|
8
|
-
import { NgbSheet, NgbSheetContainer, ngbSheetPortal } from '@ngbase/adk/sheet';
|
|
9
|
-
import { aliasSheet } from '@ngbase/adk/sheet';
|
|
10
|
-
import { createHostAnimation, fadeAnimation } from '@ngbase/adk/utils';
|
|
11
|
-
|
|
12
|
-
@Component({
|
|
13
|
-
selector: '<%= name %>-sheet',
|
|
14
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
15
|
-
providers: [aliasSheet(SheetContainer)],
|
|
16
|
-
viewProviders: [provideIcons({ lucideX })],
|
|
17
|
-
imports: [NgStyle, Button, Icon],
|
|
18
|
-
template: `
|
|
19
|
-
<div
|
|
20
|
-
class="pointer-events-none flex h-full"
|
|
21
|
-
[class]="options.position === 'left' ? 'justify-start' : 'justify-end'"
|
|
22
|
-
>
|
|
23
|
-
<div
|
|
24
|
-
class="pointer-events-auto m-2 flex flex-col overflow-hidden rounded-lg border-l bg-foreground shadow-2xl will-change-transform"
|
|
25
|
-
[@sideAnimation]="position()"
|
|
26
|
-
[ngStyle]="{
|
|
27
|
-
width: options.width,
|
|
28
|
-
minWidth: options.minWidth,
|
|
29
|
-
maxWidth: options.maxWidth,
|
|
30
|
-
}"
|
|
31
|
-
>
|
|
32
|
-
@if (!isHideHeader) {
|
|
33
|
-
<div class="flex items-center border-b px-4 py-2">
|
|
34
|
-
<h2 class="flex-1 font-bold">{{ options.title }}</h2>
|
|
35
|
-
<button <%= name %>Button="ghost" class="-mr-2 !p-2" (click)="close()">
|
|
36
|
-
<<%= name %>-icon name="lucideX" />
|
|
37
|
-
</button>
|
|
38
|
-
</div>
|
|
39
|
-
}
|
|
40
|
-
<div class="h-full overflow-auto p-4">
|
|
41
|
-
<ng-container #myDialog />
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
@if (backdropColor) {
|
|
46
|
-
<div
|
|
47
|
-
class="absolute top-0 -z-10 h-full w-full bg-black bg-opacity-30 will-change-transform"
|
|
48
|
-
[@fadeAnimation]
|
|
49
|
-
(click)="close()"
|
|
50
|
-
></div>
|
|
51
|
-
<!-- [class]="status() ? 'pointer-events-auto' : 'pointer-events-none'" -->
|
|
52
|
-
}
|
|
53
|
-
`,
|
|
54
|
-
host: {
|
|
55
|
-
class: 'fixed block top-0 bottom-0 left-0 right-0 z-p',
|
|
56
|
-
},
|
|
57
|
-
animations: [
|
|
58
|
-
createHostAnimation(['@fadeAnimation', '@sideAnimation']),
|
|
59
|
-
fadeAnimation('300ms'),
|
|
60
|
-
sideAnimation,
|
|
61
|
-
],
|
|
62
|
-
})
|
|
63
|
-
export class SheetContainer extends NgbSheetContainer {}
|
|
64
|
-
|
|
65
|
-
export function sheetPortal() {
|
|
66
|
-
return ngbSheetPortal(SheetContainer);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export type Sheet = NgbSheet;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './sidenav';
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
NgbSidenav,
|
|
4
|
-
NgbSidenavHeader,
|
|
5
|
-
NgbSidenavHeaderContent,
|
|
6
|
-
NgbSidenavHeaderTrack,
|
|
7
|
-
NgbSidenavOverlay,
|
|
8
|
-
SidenavType,
|
|
9
|
-
aliasSidenav,
|
|
10
|
-
slideAnimation,
|
|
11
|
-
} from '@ngbase/adk/sidenav';
|
|
12
|
-
|
|
13
|
-
export type { SidenavType };
|
|
14
|
-
|
|
15
|
-
@Component({
|
|
16
|
-
selector: '<%= name %>-sidenav',
|
|
17
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
18
|
-
providers: [aliasSidenav(Sidenav)],
|
|
19
|
-
imports: [NgbSidenavOverlay, NgbSidenavHeaderTrack],
|
|
20
|
-
template: `
|
|
21
|
-
@if (showOverlay()) {
|
|
22
|
-
<div ngbSidenavOverlay class="z-p bg-black/70"></div>
|
|
23
|
-
}
|
|
24
|
-
<div ngbSidenavHeaderTrack class="transition-[width] duration-500"></div>
|
|
25
|
-
<ng-content select="<%= name %>-sidenav-header" />
|
|
26
|
-
<ng-content />
|
|
27
|
-
`,
|
|
28
|
-
host: {
|
|
29
|
-
class: 'flex w-full overflow-hidden relative top-0 left-0 h-full',
|
|
30
|
-
},
|
|
31
|
-
})
|
|
32
|
-
export class Sidenav extends NgbSidenav {}
|
|
33
|
-
|
|
34
|
-
@Component({
|
|
35
|
-
selector: '<%= name %>-sidenav-header',
|
|
36
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
37
|
-
imports: [NgbSidenavHeaderContent],
|
|
38
|
-
template: `
|
|
39
|
-
<div ngbSidenavHeaderContent class="h-full overflow-auto">
|
|
40
|
-
<ng-content />
|
|
41
|
-
</div>
|
|
42
|
-
`,
|
|
43
|
-
host: {
|
|
44
|
-
class: 'block h-full bg-foreground z-p transition-[width] duration-500',
|
|
45
|
-
},
|
|
46
|
-
animations: [slideAnimation('500ms cubic-bezier(0.4, 0, 0.2, 1)')],
|
|
47
|
-
})
|
|
48
|
-
export class SidenavHeader extends NgbSidenavHeader {}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './skeleton';
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Component, input } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
@Component({
|
|
4
|
-
selector: '<%= name %>-skeleton',
|
|
5
|
-
template: ``,
|
|
6
|
-
host: {
|
|
7
|
-
class: 'block animate-pulse bg-muted-background',
|
|
8
|
-
'[class]': `shape() === 'circle' ? 'rounded-full' : 'rounded-md'`,
|
|
9
|
-
},
|
|
10
|
-
})
|
|
11
|
-
export class Skeleton {
|
|
12
|
-
readonly shape = input<'circle' | 'rectangle'>('rectangle');
|
|
13
|
-
readonly width = input<string>('100%');
|
|
14
|
-
readonly height = input<string>('20px');
|
|
15
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { NgbSlider, SliderRange, SliderThumb, SliderTrack, aliasSlider } from '@ngbase/adk/slider';
|
|
3
|
-
import { ɵFocusStyle as FocusStyle } from '<%= basepath %>/checkbox';
|
|
4
|
-
|
|
5
|
-
@Component({
|
|
6
|
-
selector: '<%= name %>-slider',
|
|
7
|
-
exportAs: '<%= name %>Slider',
|
|
8
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
9
|
-
providers: [aliasSlider(Slider)],
|
|
10
|
-
imports: [FocusStyle, SliderTrack, SliderRange, SliderThumb],
|
|
11
|
-
template: `
|
|
12
|
-
<div
|
|
13
|
-
ngbSliderTrack
|
|
14
|
-
class="h-full overflow-hidden rounded-full bg-muted-background aria-[disabled=true]:bg-opacity-30"
|
|
15
|
-
>
|
|
16
|
-
<div ngbSliderRange class="bg-primary aria-[disabled=true]:bg-muted-background"></div>
|
|
17
|
-
</div>
|
|
18
|
-
@for (thumb of noOfThumbs(); track thumb) {
|
|
19
|
-
<button
|
|
20
|
-
ngbSliderThumb
|
|
21
|
-
<%= name %>FocusStyle
|
|
22
|
-
class="{{
|
|
23
|
-
'inline-block h-5 w-5 rounded-full border-2 bg-foreground shadow-md aria-[disabled=false]:border-primary aria-[disabled=true]:bg-muted-background ' +
|
|
24
|
-
(orientation() === 'vertical'
|
|
25
|
-
? '-left-1.5 -translate-y-1/2'
|
|
26
|
-
: '-top-1.5 -translate-x-1/2')
|
|
27
|
-
}}"
|
|
28
|
-
></button>
|
|
29
|
-
}
|
|
30
|
-
`,
|
|
31
|
-
host: {
|
|
32
|
-
class: 'block relative my-2 aria-[orientation=vertical]:w-2 aria-[orientation=horizontal]:h-2',
|
|
33
|
-
},
|
|
34
|
-
})
|
|
35
|
-
export class Slider extends NgbSlider {}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { NgbSonner, ngbSonnerPortal, sonnerAnimation, SonnerBase } from '@ngbase/adk/sonner';
|
|
3
|
-
import { Icon } from '<%= basepath %>/icon';
|
|
4
|
-
import { provideIcons } from '@ng-icons/core';
|
|
5
|
-
import {
|
|
6
|
-
lucideCircleAlert,
|
|
7
|
-
lucideCircleCheck,
|
|
8
|
-
lucideInfo,
|
|
9
|
-
lucideTriangleAlert,
|
|
10
|
-
} from '@ng-icons/lucide';
|
|
11
|
-
|
|
12
|
-
@Component({
|
|
13
|
-
selector: '<%= name %>-sonner',
|
|
14
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
15
|
-
providers: [
|
|
16
|
-
provideIcons({ lucideCircleCheck, lucideInfo, lucideTriangleAlert, lucideCircleAlert }),
|
|
17
|
-
],
|
|
18
|
-
imports: [Icon, SonnerBase],
|
|
19
|
-
template: `
|
|
20
|
-
<ul class="fixed bottom-0 right-0 flex flex-col gap-1">
|
|
21
|
-
@for (msg of messages(); track msg.id) {
|
|
22
|
-
<li
|
|
23
|
-
[ngbSonnerBase]="$index"
|
|
24
|
-
class="{{
|
|
25
|
-
'm-4 w-96 rounded-lg border bg-foreground p-4 shadow-lg transition-all duration-300' +
|
|
26
|
-
(msg.type === 'success' ? ' bg-green-50 text-green-600' : '') +
|
|
27
|
-
(msg.type === 'error' ? ' bg-red-50 text-red-600' : '') +
|
|
28
|
-
(msg.type === 'warning' ? ' bg-yellow-50 text-yellow-600' : '')
|
|
29
|
-
}}"
|
|
30
|
-
>
|
|
31
|
-
<h4 class="flex items-center gap-2 font-semibold">
|
|
32
|
-
@if (msg.type && icons[msg.type]; as iconName) {
|
|
33
|
-
<<%= name %>-icon [name]="iconName" />
|
|
34
|
-
}
|
|
35
|
-
{{ msg.message }}
|
|
36
|
-
</h4>
|
|
37
|
-
@if (msg.data?.description) {
|
|
38
|
-
<p class="text-muted">{{ msg.data?.description }}</p>
|
|
39
|
-
}
|
|
40
|
-
</li>
|
|
41
|
-
}
|
|
42
|
-
</ul>
|
|
43
|
-
`,
|
|
44
|
-
animations: [sonnerAnimation],
|
|
45
|
-
})
|
|
46
|
-
export class Sonner extends NgbSonner {
|
|
47
|
-
readonly icons = {
|
|
48
|
-
success: 'lucideCircleCheck',
|
|
49
|
-
error: 'lucideCircleAlert',
|
|
50
|
-
info: 'lucideInfo',
|
|
51
|
-
warning: 'lucideTriangleAlert',
|
|
52
|
-
default: '',
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export function sonnerPortal() {
|
|
57
|
-
const portal = ngbSonnerPortal(Sonner);
|
|
58
|
-
return portal;
|
|
59
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './spinner';
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { Component, input } from '@angular/core';
|
|
2
|
-
import { animate, keyframes, style, transition, trigger } from '@angular/animations';
|
|
3
|
-
|
|
4
|
-
const spinnerAnimation = trigger('enterLeave', [
|
|
5
|
-
transition(':enter', [
|
|
6
|
-
animate(
|
|
7
|
-
'500ms cubic-bezier(0.68, -0.55, 0.265, 1.55)',
|
|
8
|
-
keyframes([
|
|
9
|
-
style({ opacity: 0, transform: 'scale(0)', offset: 0 }),
|
|
10
|
-
style({ opacity: 1, transform: 'scale(1.5)', offset: 0.7 }),
|
|
11
|
-
style({ opacity: 1, transform: 'scale(1)', offset: 1 }),
|
|
12
|
-
]),
|
|
13
|
-
),
|
|
14
|
-
]),
|
|
15
|
-
transition(':leave', [
|
|
16
|
-
animate(
|
|
17
|
-
'500ms cubic-bezier(0.68, -0.55, 0.265, 1.55)',
|
|
18
|
-
keyframes([
|
|
19
|
-
style({ opacity: 1, transform: 'scale(1)', offset: 0 }),
|
|
20
|
-
style({ opacity: 1, transform: 'scale(1.5)', offset: 0.3 }),
|
|
21
|
-
style({ opacity: 0, transform: 'scale(0)', offset: 1 }),
|
|
22
|
-
]),
|
|
23
|
-
),
|
|
24
|
-
]),
|
|
25
|
-
]);
|
|
26
|
-
|
|
27
|
-
@Component({
|
|
28
|
-
selector: '<%= name %>-spinner',
|
|
29
|
-
template: `
|
|
30
|
-
<ng-content />
|
|
31
|
-
<!-- <div
|
|
32
|
-
class="aspect-square w-full animate-spin rounded-full border-primary border-l-transparent"
|
|
33
|
-
[class]="mode()"
|
|
34
|
-
[style.border-width.px]="strokeWidth()"
|
|
35
|
-
[style.width.px]="diameter()"
|
|
36
|
-
></div> -->
|
|
37
|
-
<div
|
|
38
|
-
class="spinner"
|
|
39
|
-
[style]="{
|
|
40
|
-
width: diameter() + 'px',
|
|
41
|
-
height: diameter() + 'px',
|
|
42
|
-
}"
|
|
43
|
-
>
|
|
44
|
-
<svg viewBox="0 0 50 50">
|
|
45
|
-
<circle
|
|
46
|
-
cx="25"
|
|
47
|
-
cy="25"
|
|
48
|
-
r="20"
|
|
49
|
-
[style.strokeWidth.px]="strokeWidth()"
|
|
50
|
-
stroke-dasharray="88 38"
|
|
51
|
-
stroke-linecap="round"
|
|
52
|
-
class="fill-none stroke-current"
|
|
53
|
-
>
|
|
54
|
-
<animateTransform
|
|
55
|
-
attributeName="transform"
|
|
56
|
-
type="rotate"
|
|
57
|
-
repeatCount="indefinite"
|
|
58
|
-
dur="1s"
|
|
59
|
-
values="0 25 25;360 25 25"
|
|
60
|
-
/>
|
|
61
|
-
</circle>
|
|
62
|
-
</svg>
|
|
63
|
-
</div>
|
|
64
|
-
`,
|
|
65
|
-
host: {
|
|
66
|
-
class: 'inline-flex items-center justify-center transition-all duration-300 text-primary',
|
|
67
|
-
'[class]': `root() ? 'fixed inset-0 z-p bg-foreground bg-opacity-60 backdrop-blur-sm' : 'relative'`,
|
|
68
|
-
},
|
|
69
|
-
animations: [
|
|
70
|
-
// animation for entering and exiting, with a bouncy effect
|
|
71
|
-
spinnerAnimation,
|
|
72
|
-
],
|
|
73
|
-
})
|
|
74
|
-
export class Spinner {
|
|
75
|
-
readonly mode = input<'light' | 'dark' | ''>('light');
|
|
76
|
-
readonly diameter = input<number>(35);
|
|
77
|
-
readonly strokeWidth = input<any>(3);
|
|
78
|
-
readonly root = input<boolean>(false);
|
|
79
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './stepper';
|