@semantic-components/ui 0.10.0 → 0.11.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/fesm2022/semantic-components-ui.mjs +1149 -1779
- package/fesm2022/semantic-components-ui.mjs.map +1 -1
- package/index.d.ts +4 -0
- package/lib/components/autocomplete/autocomplete-item.d.ts +18 -0
- package/lib/components/autocomplete/autocomplete-model.d.ts +4 -0
- package/lib/components/autocomplete/autocomplete.d.ts +20 -0
- package/lib/components/autocomplete/index.d.ts +1 -0
- package/lib/components/{date-picker/inline-date-picker.d.ts → calendar/calendar.d.ts} +5 -3
- package/lib/components/calendar/index.d.ts +1 -0
- package/lib/components/{date-picker → calendar}/month-days.d.ts +3 -1
- package/lib/components/calendar/month-year-header.d.ts +9 -0
- package/lib/components/date-picker/date-picker.d.ts +4 -2
- package/lib/components/date-picker/index.d.ts +0 -1
- package/lib/components/editor/editor.d.ts +4 -1
- package/lib/components/full-calendar/full-calendar.d.ts +7 -0
- package/lib/components/full-calendar/index.d.ts +1 -0
- package/lib/components/overlay/index.d.ts +1 -0
- package/lib/components/overlay/utils.d.ts +1 -0
- package/lib/components/select/listbox-option.d.ts +8 -0
- package/lib/components/select/listbox.d.ts +7 -0
- package/lib/components/select/option.d.ts +3 -5
- package/lib/components/select/select.d.ts +11 -9
- package/lib/components/sheet/index.d.ts +2 -1
- package/lib/components/sheet/sheet-close.d.ts +10 -0
- package/lib/components/sheet/sheet-config.d.ts +5 -0
- package/lib/components/sheet/sheet-container.d.ts +9 -0
- package/lib/components/sheet/sheet-trigger.d.ts +11 -11
- package/lib/components/sheet/sheet.d.ts +3 -3
- package/lib/components/sidebar/constants.d.ts +3 -0
- package/lib/components/sidebar/index.d.ts +4 -0
- package/lib/components/sidebar/sidebar-mobile.d.ts +13 -0
- package/lib/components/sidebar/sidebar-provider.d.ts +11 -0
- package/lib/components/sidebar/sidebar-state.d.ts +9 -0
- package/lib/components/sidebar/sidebar-toggler.d.ts +8 -0
- package/lib/components/sidebar/sidebar.d.ts +20 -0
- package/lib/components/typography/article.d.ts +8 -0
- package/lib/components/typography/heading.d.ts +8 -0
- package/lib/components/typography/index.d.ts +2 -0
- package/package.json +1 -2
- package/lib/components/date-picker/month-year-header.d.ts +0 -8
- package/lib/components/select/select-state.d.ts +0 -9
- package/lib/components/sheet/sheet-toggler.d.ts +0 -10
- package/lib/components/sheet/sidebar-content.d.ts +0 -7
- /package/lib/components/{date-picker → calendar}/util.d.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { clsx } from 'clsx';
|
|
2
2
|
import { twMerge } from 'tailwind-merge';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { input, computed, Component, ViewEncapsulation, ChangeDetectionStrategy, inject, ElementRef, Directive, HostListener,
|
|
4
|
+
import { input, computed, Component, ViewEncapsulation, ChangeDetectionStrategy, signal, inject, ElementRef, Directive, HostListener, Injectable, ChangeDetectorRef, viewChild, afterNextRender, forwardRef, ViewContainerRef, contentChildren, model, output, effect, LOCALE_ID, Injector, booleanAttribute, untracked, viewChildren } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/forms';
|
|
6
6
|
import { FormGroup, FormControl, Validators, ReactiveFormsModule, NG_VALUE_ACCESSOR, FormArray, NgForm, FormGroupDirective, NgControl, FormBuilder, FormsModule } from '@angular/forms';
|
|
7
7
|
import { Editor } from '@tiptap/core';
|
|
@@ -9,34 +9,87 @@ import Document from '@tiptap/extension-document';
|
|
|
9
9
|
import Heading from '@tiptap/extension-heading';
|
|
10
10
|
import Paragraph from '@tiptap/extension-paragraph';
|
|
11
11
|
import Text from '@tiptap/extension-text';
|
|
12
|
-
import { SvgQuoteIcon, SvgBoldIcon, SvgListIcon, SvgCodeIcon, SvgPaletteIcon, SvgHighlighterIcon, SvgUndoIcon, SvgRedoIcon, SvgMinusIcon, SvgItalicIcon, SvgListOrderedIcon, SvgStrikethroughIcon, SvgAlignLeftIcon, SvgAlignRightIcon, SvgAlignCenterIcon, SvgUnderlineIcon, SvgEllipsisIcon, SvgChevronLeftIcon, SvgChevronsLeftIcon, SvgChevronRightIcon, SvgChevronsRightIcon, SvgCalendarIcon, SvgMoonIcon, SvgSunIcon, SvgChevronDownIcon, SvgCheckIcon, SvgMenuIcon, SvgXIcon, SvgChevronUpIcon, SvgCircleIcon, SvgDotIcon, SvgSearchIcon } from '@semantic-icons/lucide-icons';
|
|
13
12
|
import { cva } from 'class-variance-authority';
|
|
14
|
-
import {
|
|
13
|
+
import { SvgQuoteIcon, SvgBoldIcon, SvgListIcon, SvgCodeIcon, SvgPaletteIcon, SvgHighlighterIcon, SvgUndoIcon, SvgRedoIcon, SvgMinusIcon, SvgItalicIcon, SvgListOrderedIcon, SvgStrikethroughIcon, SvgAlignLeftIcon, SvgAlignRightIcon, SvgAlignCenterIcon, SvgUnderlineIcon, SvgCheckIcon, SvgChevronDownIcon, SvgEllipsisIcon, SvgChevronLeftIcon, SvgChevronsLeftIcon, SvgChevronRightIcon, SvgChevronsRightIcon, SvgCalendarIcon, SvgMoonIcon, SvgSunIcon, SvgXIcon, SvgChevronUpIcon, SvgCircleIcon, SvgDotIcon, SvgSearchIcon } from '@semantic-icons/lucide-icons';
|
|
14
|
+
import { Overlay, OverlayModule, OverlayContainer, OverlayConfig } from '@angular/cdk/overlay';
|
|
15
15
|
import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
16
16
|
import * as i1$5 from '@angular/cdk/menu';
|
|
17
17
|
import { CdkMenuTrigger, CdkMenu, CdkMenuItem, CdkContextMenuTrigger, CdkMenuItemCheckbox, CdkMenuGroup, CdkMenuItemRadio, CdkMenuBar } from '@angular/cdk/menu';
|
|
18
18
|
import { DialogRef, Dialog, DialogModule } from '@angular/cdk/dialog';
|
|
19
|
+
import * as i1$1 from '@angular/cdk/a11y';
|
|
20
|
+
import { A11yModule, FocusMonitor, ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
19
21
|
import { Directionality } from '@angular/cdk/bidi';
|
|
22
|
+
import { TAB, ESCAPE, hasModifierKey, ENTER } from '@angular/cdk/keycodes';
|
|
23
|
+
import { CdkOption, CdkListbox } from '@angular/cdk/listbox';
|
|
20
24
|
import { _getEventTarget } from '@angular/cdk/platform';
|
|
21
25
|
import * as i1$3 from '@angular/common';
|
|
22
|
-
import { NgClass, DOCUMENT, CommonModule, AsyncPipe, JsonPipe,
|
|
23
|
-
import
|
|
24
|
-
import * as i1$2 from '@angular/router';
|
|
25
|
-
import { RouterModule } from '@angular/router';
|
|
26
|
-
import * as i1$1 from 'ngx-scrollbar';
|
|
26
|
+
import { NgClass, DOCUMENT, NgTemplateOutlet, CommonModule, AsyncPipe, JsonPipe, NgOptimizedImage } from '@angular/common';
|
|
27
|
+
import * as i1$2 from 'ngx-scrollbar';
|
|
27
28
|
import { NgScrollbarModule } from 'ngx-scrollbar';
|
|
28
29
|
import EmblaCarousel from 'embla-carousel';
|
|
29
30
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
30
31
|
import * as i1$4 from '@angular/cdk/accordion';
|
|
31
32
|
import { CdkAccordionModule } from '@angular/cdk/accordion';
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import
|
|
33
|
+
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
34
|
+
import { Subject, debounceTime } from 'rxjs';
|
|
35
|
+
import * as i1$6 from '@angular/cdk/layout';
|
|
36
|
+
import { LayoutModule } from '@angular/cdk/layout';
|
|
35
37
|
|
|
36
38
|
function cn(...inputs) {
|
|
37
39
|
return twMerge(clsx(inputs));
|
|
38
40
|
}
|
|
39
41
|
|
|
42
|
+
const scHeadingVariants = cva('', {
|
|
43
|
+
variants: {
|
|
44
|
+
level: {
|
|
45
|
+
1: 'text-4xl font-extrabold tracking-tight lg:text-5xl',
|
|
46
|
+
2: 'text-3xl font-semibold tracking-tight',
|
|
47
|
+
3: 'text-2xl font-semibold tracking-tight',
|
|
48
|
+
4: 'text-xl font-semibold tracking-tight',
|
|
49
|
+
5: '',
|
|
50
|
+
6: '',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
defaultVariants: {
|
|
54
|
+
level: 1,
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
class ScHeading {
|
|
58
|
+
level = input(1);
|
|
59
|
+
class = input('');
|
|
60
|
+
classes = computed(() => cn(scHeadingVariants({ level: this.level() }), this.class()));
|
|
61
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScHeading, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScHeading, isStandalone: true, selector: "h1[sc-heading], h2[sc-heading], h3[sc-heading], h4[sc-heading], h5[sc-heading], h6[sc-heading]", inputs: { level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
63
|
+
<ng-content />
|
|
64
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
65
|
+
}
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScHeading, decorators: [{
|
|
67
|
+
type: Component,
|
|
68
|
+
args: [{ selector: 'h1[sc-heading], h2[sc-heading], h3[sc-heading], h4[sc-heading], h5[sc-heading], h6[sc-heading]', imports: [], template: `
|
|
69
|
+
<ng-content />
|
|
70
|
+
`, host: {
|
|
71
|
+
'[class]': 'classes()',
|
|
72
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
73
|
+
}] });
|
|
74
|
+
|
|
75
|
+
const scArticleClasses = signal('prose prose-sm sm:prose lg:prose-lg xl:prose-2xl');
|
|
76
|
+
class ScArticle {
|
|
77
|
+
class = input('');
|
|
78
|
+
classes = computed(() => cn(scArticleClasses(), this.class()));
|
|
79
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScArticle, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
80
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScArticle, isStandalone: true, selector: "sc-article", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
81
|
+
<ng-content />
|
|
82
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
83
|
+
}
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScArticle, decorators: [{
|
|
85
|
+
type: Component,
|
|
86
|
+
args: [{ selector: 'sc-article', imports: [], template: `
|
|
87
|
+
<ng-content />
|
|
88
|
+
`, host: {
|
|
89
|
+
'[class]': 'classes()',
|
|
90
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
91
|
+
}] });
|
|
92
|
+
|
|
40
93
|
const toggleVariants = cva('inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_.svg]:pointer-events-none [&_.svg]:size-4 [&_.svg]:shrink-0', {
|
|
41
94
|
variants: {
|
|
42
95
|
variant: {
|
|
@@ -4571,6 +4624,9 @@ class ScEditor {
|
|
|
4571
4624
|
_value = signal('');
|
|
4572
4625
|
_isEditable = signal(true);
|
|
4573
4626
|
class = input('');
|
|
4627
|
+
classes = computed(() => cn('', this.class()));
|
|
4628
|
+
editorClass = input('');
|
|
4629
|
+
editorClasses = computed(() => cn('mx-auto focus:outline-none', scArticleClasses(), this.editorClass()));
|
|
4574
4630
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
4575
4631
|
_onChange = () => { };
|
|
4576
4632
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
@@ -4685,7 +4741,7 @@ class ScEditor {
|
|
|
4685
4741
|
editable: this._isEditable(),
|
|
4686
4742
|
editorProps: {
|
|
4687
4743
|
attributes: {
|
|
4688
|
-
class: this.
|
|
4744
|
+
class: this.editorClasses(),
|
|
4689
4745
|
},
|
|
4690
4746
|
},
|
|
4691
4747
|
});
|
|
@@ -4714,7 +4770,7 @@ class ScEditor {
|
|
|
4714
4770
|
this._cdr.markForCheck();
|
|
4715
4771
|
}
|
|
4716
4772
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScEditor, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4717
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: ScEditor, isStandalone: true, selector: "sc-editor", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
4773
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: ScEditor, isStandalone: true, selector: "sc-editor", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, editorClass: { classPropertyName: "editorClass", publicName: "editorClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, providers: [
|
|
4718
4774
|
{
|
|
4719
4775
|
provide: NG_VALUE_ACCESSOR,
|
|
4720
4776
|
useExisting: forwardRef(() => ScEditor),
|
|
@@ -4844,7 +4900,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
4844
4900
|
></div>
|
|
4845
4901
|
</div>
|
|
4846
4902
|
</div>
|
|
4847
|
-
`,
|
|
4903
|
+
`, host: {
|
|
4904
|
+
'[class]': 'classes()',
|
|
4905
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
4848
4906
|
{
|
|
4849
4907
|
provide: NG_VALUE_ACCESSOR,
|
|
4850
4908
|
useExisting: forwardRef(() => ScEditor),
|
|
@@ -4894,6 +4952,301 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
4894
4952
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
4895
4953
|
}] });
|
|
4896
4954
|
|
|
4955
|
+
class ScListbox {
|
|
4956
|
+
class = input('');
|
|
4957
|
+
classes = computed(() => cn('relative z-50 max-h-96 w-full min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', this.class()));
|
|
4958
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScListbox, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4959
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScListbox, isStandalone: true, selector: "ul[sc-listbox]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
4960
|
+
<ng-content />
|
|
4961
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
4962
|
+
}
|
|
4963
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScListbox, decorators: [{
|
|
4964
|
+
type: Component,
|
|
4965
|
+
args: [{ selector: 'ul[sc-listbox]', imports: [], template: `
|
|
4966
|
+
<ng-content />
|
|
4967
|
+
`, host: {
|
|
4968
|
+
'[class]': 'classes()',
|
|
4969
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
4970
|
+
}] });
|
|
4971
|
+
|
|
4972
|
+
class ScListboxOption {
|
|
4973
|
+
class = input('');
|
|
4974
|
+
classes = computed(() => cn('relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', this.class()));
|
|
4975
|
+
isSelected = input.required();
|
|
4976
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScListboxOption, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4977
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScListboxOption, isStandalone: true, selector: "li[sc-listbox-option]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, isSelected: { classPropertyName: "isSelected", publicName: "isSelected", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
4978
|
+
@if (isSelected()) {
|
|
4979
|
+
<svg-check-icon class="absolute left-2 flex size-4 items-center justify-center" />
|
|
4980
|
+
}
|
|
4981
|
+
|
|
4982
|
+
<ng-content />
|
|
4983
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: SvgCheckIcon, selector: "svg-check-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
4984
|
+
}
|
|
4985
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScListboxOption, decorators: [{
|
|
4986
|
+
type: Component,
|
|
4987
|
+
args: [{ selector: 'li[sc-listbox-option]', imports: [SvgCheckIcon], template: `
|
|
4988
|
+
@if (isSelected()) {
|
|
4989
|
+
<svg-check-icon class="absolute left-2 flex size-4 items-center justify-center" />
|
|
4990
|
+
}
|
|
4991
|
+
|
|
4992
|
+
<ng-content />
|
|
4993
|
+
`, host: {
|
|
4994
|
+
'[class]': 'classes()',
|
|
4995
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
4996
|
+
}] });
|
|
4997
|
+
|
|
4998
|
+
class ScOption {
|
|
4999
|
+
value = input.required();
|
|
5000
|
+
labelEl = viewChild.required('label');
|
|
5001
|
+
label = computed(() => {
|
|
5002
|
+
return this.labelEl().nativeElement.textContent?.trim();
|
|
5003
|
+
});
|
|
5004
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScOption, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5005
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: ScOption, isStandalone: true, selector: "sc-option", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "labelEl", first: true, predicate: ["label"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
5006
|
+
<span #label>
|
|
5007
|
+
<ng-content />
|
|
5008
|
+
</span>
|
|
5009
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5010
|
+
}
|
|
5011
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScOption, decorators: [{
|
|
5012
|
+
type: Component,
|
|
5013
|
+
args: [{ selector: 'sc-option', imports: [], template: `
|
|
5014
|
+
<span #label>
|
|
5015
|
+
<ng-content />
|
|
5016
|
+
</span>
|
|
5017
|
+
`, host: {}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5018
|
+
}] });
|
|
5019
|
+
|
|
5020
|
+
class ScSelect {
|
|
5021
|
+
static nextId = 0;
|
|
5022
|
+
id = 0;
|
|
5023
|
+
_getPanelId() {
|
|
5024
|
+
return `panel-${this.id}`;
|
|
5025
|
+
}
|
|
5026
|
+
_cdr = inject(ChangeDetectorRef);
|
|
5027
|
+
_overlay = inject(Overlay);
|
|
5028
|
+
_dir = inject(Directionality, { optional: true });
|
|
5029
|
+
_viewContainerRef = inject(ViewContainerRef);
|
|
5030
|
+
_portal = null;
|
|
5031
|
+
scSelectTrigger = viewChild.required('scSelectTrigger');
|
|
5032
|
+
_panelTemplate = viewChild.required('panelTemplate');
|
|
5033
|
+
placeholder = input('');
|
|
5034
|
+
isOpen = signal(false);
|
|
5035
|
+
constructor() {
|
|
5036
|
+
this.id = ++ScSelect.nextId;
|
|
5037
|
+
}
|
|
5038
|
+
options = contentChildren(ScOption);
|
|
5039
|
+
value = model(undefined);
|
|
5040
|
+
isDisabled = signal(false);
|
|
5041
|
+
writeValue(value) {
|
|
5042
|
+
this.value.set(value);
|
|
5043
|
+
}
|
|
5044
|
+
handleValueChange(v) {
|
|
5045
|
+
this.setValue(v[0]);
|
|
5046
|
+
this.close();
|
|
5047
|
+
}
|
|
5048
|
+
setValue(value) {
|
|
5049
|
+
this.value.set(value);
|
|
5050
|
+
this._onChange(value);
|
|
5051
|
+
this._cdr.markForCheck();
|
|
5052
|
+
}
|
|
5053
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
5054
|
+
_onChange = () => { };
|
|
5055
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
5056
|
+
_onTouched = () => { };
|
|
5057
|
+
registerOnChange(fn) {
|
|
5058
|
+
this._onChange = fn;
|
|
5059
|
+
}
|
|
5060
|
+
registerOnTouched(fn) {
|
|
5061
|
+
this._onTouched = fn;
|
|
5062
|
+
}
|
|
5063
|
+
setDisabledState(isDisabled) {
|
|
5064
|
+
this.isDisabled.set(isDisabled);
|
|
5065
|
+
}
|
|
5066
|
+
label = computed(() => {
|
|
5067
|
+
if (this.value()) {
|
|
5068
|
+
return this.options()
|
|
5069
|
+
.find((element) => element.value() === this.value())
|
|
5070
|
+
?.label();
|
|
5071
|
+
}
|
|
5072
|
+
return this.placeholder();
|
|
5073
|
+
});
|
|
5074
|
+
_isExpanded = computed(() => {
|
|
5075
|
+
return this.isOpen();
|
|
5076
|
+
});
|
|
5077
|
+
_overlayRef = null;
|
|
5078
|
+
_getOverlayRef() {
|
|
5079
|
+
if (this._overlayRef) {
|
|
5080
|
+
return this._overlayRef;
|
|
5081
|
+
}
|
|
5082
|
+
const positionStrategy = this._overlay
|
|
5083
|
+
.position()
|
|
5084
|
+
.flexibleConnectedTo(this.scSelectTrigger())
|
|
5085
|
+
.withFlexibleDimensions(false)
|
|
5086
|
+
.withPush(false)
|
|
5087
|
+
.withPositions([
|
|
5088
|
+
{
|
|
5089
|
+
originX: 'start',
|
|
5090
|
+
originY: 'bottom',
|
|
5091
|
+
overlayX: 'start',
|
|
5092
|
+
overlayY: 'top',
|
|
5093
|
+
offsetY: 8,
|
|
5094
|
+
},
|
|
5095
|
+
{
|
|
5096
|
+
originX: 'start',
|
|
5097
|
+
originY: 'top',
|
|
5098
|
+
overlayX: 'start',
|
|
5099
|
+
overlayY: 'bottom',
|
|
5100
|
+
offsetY: -8,
|
|
5101
|
+
},
|
|
5102
|
+
]);
|
|
5103
|
+
this._overlayRef = this._overlay.create({
|
|
5104
|
+
positionStrategy,
|
|
5105
|
+
scrollStrategy: this._overlay.scrollStrategies.reposition(),
|
|
5106
|
+
direction: this._dir || 'ltr',
|
|
5107
|
+
hasBackdrop: false,
|
|
5108
|
+
});
|
|
5109
|
+
this._overlayRef.keydownEvents().subscribe((event) => {
|
|
5110
|
+
this._handleKeydown(event);
|
|
5111
|
+
});
|
|
5112
|
+
this._overlayRef.outsidePointerEvents().subscribe((event) => {
|
|
5113
|
+
const target = _getEventTarget(event);
|
|
5114
|
+
const origin = this.scSelectTrigger().nativeElement;
|
|
5115
|
+
if (target && target !== origin && !origin.contains(target)) {
|
|
5116
|
+
this.close();
|
|
5117
|
+
}
|
|
5118
|
+
});
|
|
5119
|
+
return this._overlayRef;
|
|
5120
|
+
}
|
|
5121
|
+
open() {
|
|
5122
|
+
if (this.isOpen()) {
|
|
5123
|
+
return;
|
|
5124
|
+
}
|
|
5125
|
+
this.isOpen.set(true);
|
|
5126
|
+
const overlayRef = this._getOverlayRef();
|
|
5127
|
+
overlayRef.updateSize({ width: this.scSelectTrigger().nativeElement.offsetWidth });
|
|
5128
|
+
this._portal ??= new TemplatePortal(this._panelTemplate(), this._viewContainerRef);
|
|
5129
|
+
overlayRef.attach(this._portal);
|
|
5130
|
+
}
|
|
5131
|
+
close() {
|
|
5132
|
+
if (this.isOpen()) {
|
|
5133
|
+
this.isOpen.set(false);
|
|
5134
|
+
this._overlayRef?.detach();
|
|
5135
|
+
}
|
|
5136
|
+
}
|
|
5137
|
+
/** Handles keyboard events while the overlay is open. */
|
|
5138
|
+
_handleKeydown(event) {
|
|
5139
|
+
const keyCode = event.keyCode;
|
|
5140
|
+
if (keyCode === TAB) {
|
|
5141
|
+
this.close();
|
|
5142
|
+
}
|
|
5143
|
+
else if (keyCode === ESCAPE && !hasModifierKey(event)) {
|
|
5144
|
+
event.preventDefault();
|
|
5145
|
+
this.close();
|
|
5146
|
+
}
|
|
5147
|
+
else if (keyCode === ENTER) {
|
|
5148
|
+
//TODO for me it's mean it's was selected
|
|
5149
|
+
this.close();
|
|
5150
|
+
}
|
|
5151
|
+
}
|
|
5152
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5153
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScSelect, isStandalone: true, selector: "sc-select", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, providers: [
|
|
5154
|
+
{
|
|
5155
|
+
provide: NG_VALUE_ACCESSOR,
|
|
5156
|
+
useExisting: forwardRef(() => ScSelect),
|
|
5157
|
+
multi: true,
|
|
5158
|
+
},
|
|
5159
|
+
], queries: [{ propertyName: "options", predicate: ScOption, isSignal: true }], viewQueries: [{ propertyName: "scSelectTrigger", first: true, predicate: ["scSelectTrigger"], descendants: true, isSignal: true }, { propertyName: "_panelTemplate", first: true, predicate: ["panelTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
5160
|
+
<button
|
|
5161
|
+
class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1"
|
|
5162
|
+
#scSelectTrigger
|
|
5163
|
+
[disabled]="isDisabled()"
|
|
5164
|
+
[attr.aria-expanded]="_isExpanded()"
|
|
5165
|
+
[attr.aria-controls]="_getPanelId()"
|
|
5166
|
+
(click)="open()"
|
|
5167
|
+
type="button"
|
|
5168
|
+
role="combobox"
|
|
5169
|
+
>
|
|
5170
|
+
{{ label() }}
|
|
5171
|
+
<svg-chevron-down-icon class="size-4 opacity-50" />
|
|
5172
|
+
</button>
|
|
5173
|
+
|
|
5174
|
+
<ng-template #panelTemplate>
|
|
5175
|
+
<ul
|
|
5176
|
+
[id]="_getPanelId()"
|
|
5177
|
+
[cdkTrapFocusAutoCapture]="true"
|
|
5178
|
+
(cdkListboxValueChange)="handleValueChange($event.value)"
|
|
5179
|
+
sc-listbox
|
|
5180
|
+
cdkListbox
|
|
5181
|
+
cdkTrapFocus
|
|
5182
|
+
>
|
|
5183
|
+
@for (option of options(); track $index) {
|
|
5184
|
+
<li
|
|
5185
|
+
[isSelected]="option.value() === this.value()"
|
|
5186
|
+
[cdkOption]="option.value()"
|
|
5187
|
+
sc-listbox-option
|
|
5188
|
+
>
|
|
5189
|
+
{{ option.label() }}
|
|
5190
|
+
</li>
|
|
5191
|
+
}
|
|
5192
|
+
</ul>
|
|
5193
|
+
</ng-template>
|
|
5194
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: SvgChevronDownIcon, selector: "svg-chevron-down-icon", inputs: ["class", "svgClass"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "component", type: ScListbox, selector: "ul[sc-listbox]", inputs: ["class"] }, { kind: "component", type: ScListboxOption, selector: "li[sc-listbox-option]", inputs: ["class", "isSelected"] }, { kind: "directive", type: CdkOption, selector: "[cdkOption]", inputs: ["id", "cdkOption", "cdkOptionTypeaheadLabel", "cdkOptionDisabled", "tabindex"], exportAs: ["cdkOption"] }, { kind: "directive", type: CdkListbox, selector: "[cdkListbox]", inputs: ["id", "tabindex", "cdkListboxValue", "cdkListboxMultiple", "cdkListboxDisabled", "cdkListboxUseActiveDescendant", "cdkListboxOrientation", "cdkListboxCompareWith", "cdkListboxNavigationWrapDisabled", "cdkListboxNavigatesDisabledOptions"], outputs: ["cdkListboxValueChange"], exportAs: ["cdkListbox"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5195
|
+
}
|
|
5196
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSelect, decorators: [{
|
|
5197
|
+
type: Component,
|
|
5198
|
+
args: [{ selector: 'sc-select', imports: [
|
|
5199
|
+
SvgChevronDownIcon,
|
|
5200
|
+
OverlayModule,
|
|
5201
|
+
ScListbox,
|
|
5202
|
+
ScListboxOption,
|
|
5203
|
+
CdkOption,
|
|
5204
|
+
CdkListbox,
|
|
5205
|
+
A11yModule,
|
|
5206
|
+
], template: `
|
|
5207
|
+
<button
|
|
5208
|
+
class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1"
|
|
5209
|
+
#scSelectTrigger
|
|
5210
|
+
[disabled]="isDisabled()"
|
|
5211
|
+
[attr.aria-expanded]="_isExpanded()"
|
|
5212
|
+
[attr.aria-controls]="_getPanelId()"
|
|
5213
|
+
(click)="open()"
|
|
5214
|
+
type="button"
|
|
5215
|
+
role="combobox"
|
|
5216
|
+
>
|
|
5217
|
+
{{ label() }}
|
|
5218
|
+
<svg-chevron-down-icon class="size-4 opacity-50" />
|
|
5219
|
+
</button>
|
|
5220
|
+
|
|
5221
|
+
<ng-template #panelTemplate>
|
|
5222
|
+
<ul
|
|
5223
|
+
[id]="_getPanelId()"
|
|
5224
|
+
[cdkTrapFocusAutoCapture]="true"
|
|
5225
|
+
(cdkListboxValueChange)="handleValueChange($event.value)"
|
|
5226
|
+
sc-listbox
|
|
5227
|
+
cdkListbox
|
|
5228
|
+
cdkTrapFocus
|
|
5229
|
+
>
|
|
5230
|
+
@for (option of options(); track $index) {
|
|
5231
|
+
<li
|
|
5232
|
+
[isSelected]="option.value() === this.value()"
|
|
5233
|
+
[cdkOption]="option.value()"
|
|
5234
|
+
sc-listbox-option
|
|
5235
|
+
>
|
|
5236
|
+
{{ option.label() }}
|
|
5237
|
+
</li>
|
|
5238
|
+
}
|
|
5239
|
+
</ul>
|
|
5240
|
+
</ng-template>
|
|
5241
|
+
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
5242
|
+
{
|
|
5243
|
+
provide: NG_VALUE_ACCESSOR,
|
|
5244
|
+
useExisting: forwardRef(() => ScSelect),
|
|
5245
|
+
multi: true,
|
|
5246
|
+
},
|
|
5247
|
+
] }]
|
|
5248
|
+
}], ctorParameters: () => [] });
|
|
5249
|
+
|
|
4897
5250
|
class ScPageItem {
|
|
4898
5251
|
currentPage = input.required();
|
|
4899
5252
|
page = input.required();
|
|
@@ -5083,11 +5436,11 @@ class ScPaginator {
|
|
|
5083
5436
|
@if (!hidePageSize()) {
|
|
5084
5437
|
<div>
|
|
5085
5438
|
<label class="" for="items-per-page">Items per page:</label>
|
|
5086
|
-
<select class="" id="items-per-page" [formControl]="pageSizeFormControl">
|
|
5439
|
+
<sc-select class="" id="items-per-page" [formControl]="pageSizeFormControl">
|
|
5087
5440
|
@for (pageSizeOption of pageSizeOptions(); track $index) {
|
|
5088
|
-
<option [value]="pageSizeOption">{{ pageSizeOption }}</option>
|
|
5441
|
+
<sc-option [value]="pageSizeOption">{{ pageSizeOption }}</sc-option>
|
|
5089
5442
|
}
|
|
5090
|
-
</select>
|
|
5443
|
+
</sc-select>
|
|
5091
5444
|
</div>
|
|
5092
5445
|
}
|
|
5093
5446
|
|
|
@@ -5169,7 +5522,7 @@ class ScPaginator {
|
|
|
5169
5522
|
}
|
|
5170
5523
|
</ul>
|
|
5171
5524
|
</nav>
|
|
5172
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScPageItem, selector: "sc-page-item", inputs: ["currentPage", "page"], outputs: ["pageChanged"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.
|
|
5525
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScPageItem, selector: "sc-page-item", inputs: ["currentPage", "page"], outputs: ["pageChanged"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ScPagination, selector: "nav[sc-pagination]", inputs: ["class"] }, { kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }, { kind: "component", type: SvgChevronLeftIcon, selector: "svg-chevron-left-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: SvgChevronsLeftIcon, selector: "svg-chevrons-left-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: SvgChevronRightIcon, selector: "svg-chevron-right-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: SvgChevronsRightIcon, selector: "svg-chevrons-right-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: ScSelect, selector: "sc-select", inputs: ["placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: ScOption, selector: "sc-option", inputs: ["value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5173
5526
|
}
|
|
5174
5527
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScPaginator, decorators: [{
|
|
5175
5528
|
type: Component,
|
|
@@ -5182,15 +5535,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5182
5535
|
SvgChevronsLeftIcon,
|
|
5183
5536
|
SvgChevronRightIcon,
|
|
5184
5537
|
SvgChevronsRightIcon,
|
|
5538
|
+
ScSelect,
|
|
5539
|
+
ScOption,
|
|
5185
5540
|
], template: `
|
|
5186
5541
|
@if (!hidePageSize()) {
|
|
5187
5542
|
<div>
|
|
5188
5543
|
<label class="" for="items-per-page">Items per page:</label>
|
|
5189
|
-
<select class="" id="items-per-page" [formControl]="pageSizeFormControl">
|
|
5544
|
+
<sc-select class="" id="items-per-page" [formControl]="pageSizeFormControl">
|
|
5190
5545
|
@for (pageSizeOption of pageSizeOptions(); track $index) {
|
|
5191
|
-
<option [value]="pageSizeOption">{{ pageSizeOption }}</option>
|
|
5546
|
+
<sc-option [value]="pageSizeOption">{{ pageSizeOption }}</sc-option>
|
|
5192
5547
|
}
|
|
5193
|
-
</select>
|
|
5548
|
+
</sc-select>
|
|
5194
5549
|
</div>
|
|
5195
5550
|
}
|
|
5196
5551
|
|
|
@@ -5277,24 +5632,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5277
5632
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5278
5633
|
}], ctorParameters: () => [] });
|
|
5279
5634
|
|
|
5280
|
-
class
|
|
5281
|
-
class = input('');
|
|
5282
|
-
classes = computed(() => cn('flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', this.class()));
|
|
5283
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5284
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScInput, isStandalone: true, selector: "input[sc-input]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
5285
|
-
<ng-content />
|
|
5286
|
-
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5287
|
-
}
|
|
5288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScInput, decorators: [{
|
|
5289
|
-
type: Component,
|
|
5290
|
-
args: [{ selector: 'input[sc-input]', imports: [], template: `
|
|
5291
|
-
<ng-content />
|
|
5292
|
-
`, host: {
|
|
5293
|
-
'[class]': 'classes()',
|
|
5294
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5295
|
-
}] });
|
|
5296
|
-
|
|
5297
|
-
class ScCard {
|
|
5635
|
+
class ScCard {
|
|
5298
5636
|
class = input('');
|
|
5299
5637
|
classes = computed(() => cn('rounded-lg border bg-card text-card-foreground shadow-sm', this.class()));
|
|
5300
5638
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -5397,6 +5735,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5397
5735
|
}] });
|
|
5398
5736
|
|
|
5399
5737
|
class ScMonthDays {
|
|
5738
|
+
class = input('');
|
|
5739
|
+
classes = computed(() => cn('grid grid-cols-7 place-items-center', this.class()));
|
|
5400
5740
|
weekDaysNames = input.required();
|
|
5401
5741
|
days = input.required();
|
|
5402
5742
|
firstDayMonth = input.required();
|
|
@@ -5411,88 +5751,87 @@ class ScMonthDays {
|
|
|
5411
5751
|
this.selectedDayChange.emit(selectedDay);
|
|
5412
5752
|
}
|
|
5413
5753
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScMonthDays, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5414
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScMonthDays, isStandalone: true, selector: "sc-month-days", inputs: { weekDaysNames: { classPropertyName: "weekDaysNames", publicName: "weekDaysNames", isSignal: true, isRequired: true, transformFunction: null }, days: { classPropertyName: "days", publicName: "days", isSignal: true, isRequired: true, transformFunction: null }, firstDayMonth: { classPropertyName: "firstDayMonth", publicName: "firstDayMonth", isSignal: true, isRequired: true, transformFunction: null }, selectedDay: { classPropertyName: "selectedDay", publicName: "selectedDay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedDayChange: "selectedDayChange" }, ngImport: i0, template: `
|
|
5415
|
-
|
|
5416
|
-
|
|
5417
|
-
|
|
5418
|
-
|
|
5419
|
-
|
|
5420
|
-
|
|
5421
|
-
|
|
5422
|
-
|
|
5423
|
-
|
|
5424
|
-
|
|
5425
|
-
|
|
5426
|
-
|
|
5427
|
-
|
|
5428
|
-
|
|
5429
|
-
|
|
5430
|
-
|
|
5431
|
-
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
|
|
5437
|
-
|
|
5438
|
-
|
|
5439
|
-
|
|
5440
|
-
|
|
5441
|
-
|
|
5442
|
-
|
|
5443
|
-
|
|
5444
|
-
|
|
5445
|
-
}
|
|
5446
|
-
</div>
|
|
5754
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScMonthDays, isStandalone: true, selector: "sc-month-days", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, weekDaysNames: { classPropertyName: "weekDaysNames", publicName: "weekDaysNames", isSignal: true, isRequired: true, transformFunction: null }, days: { classPropertyName: "days", publicName: "days", isSignal: true, isRequired: true, transformFunction: null }, firstDayMonth: { classPropertyName: "firstDayMonth", publicName: "firstDayMonth", isSignal: true, isRequired: true, transformFunction: null }, selectedDay: { classPropertyName: "selectedDay", publicName: "selectedDay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedDayChange: "selectedDayChange" }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
5755
|
+
@for (weekDayName of weekDaysNames(); track weekDayName.long) {
|
|
5756
|
+
<abbr
|
|
5757
|
+
class="size-10 text-center text-muted-foreground"
|
|
5758
|
+
[title]="weekDayName.long"
|
|
5759
|
+
[attr.aria-label]="weekDayName.long"
|
|
5760
|
+
>
|
|
5761
|
+
{{ weekDayName.short }}
|
|
5762
|
+
</abbr>
|
|
5763
|
+
}
|
|
5764
|
+
|
|
5765
|
+
@for (day of days(); track $index; let index = $index) {
|
|
5766
|
+
<button
|
|
5767
|
+
[ngClass]="{
|
|
5768
|
+
'col-start-1': index === 0 && firstDayMonth() === 0,
|
|
5769
|
+
'col-start-2': index === 0 && firstDayMonth() === 1,
|
|
5770
|
+
'col-start-3': index === 0 && firstDayMonth() === 2,
|
|
5771
|
+
'col-start-4': index === 0 && firstDayMonth() === 3,
|
|
5772
|
+
'col-start-5': index === 0 && firstDayMonth() === 4,
|
|
5773
|
+
'col-start-6': index === 0 && firstDayMonth() === 5,
|
|
5774
|
+
'col-start-7': index === 0 && firstDayMonth() === 6,
|
|
5775
|
+
}"
|
|
5776
|
+
[attr.data-sc-day]="day"
|
|
5777
|
+
[variant]="isSelected(day) ? 'primary' : 'ghost'"
|
|
5778
|
+
(click)="setSelectedDay($event)"
|
|
5779
|
+
sc-button
|
|
5780
|
+
size="icon"
|
|
5781
|
+
>
|
|
5782
|
+
{{ day.slice(-2) }}
|
|
5783
|
+
</button>
|
|
5784
|
+
}
|
|
5447
5785
|
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5448
5786
|
}
|
|
5449
5787
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScMonthDays, decorators: [{
|
|
5450
5788
|
type: Component,
|
|
5451
5789
|
args: [{ selector: 'sc-month-days', imports: [NgClass, ScButton], template: `
|
|
5452
|
-
|
|
5453
|
-
|
|
5454
|
-
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
|
|
5458
|
-
|
|
5459
|
-
|
|
5460
|
-
|
|
5461
|
-
|
|
5462
|
-
|
|
5463
|
-
|
|
5464
|
-
|
|
5465
|
-
|
|
5466
|
-
|
|
5467
|
-
|
|
5468
|
-
|
|
5469
|
-
|
|
5470
|
-
|
|
5471
|
-
|
|
5472
|
-
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
|
|
5476
|
-
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5790
|
+
@for (weekDayName of weekDaysNames(); track weekDayName.long) {
|
|
5791
|
+
<abbr
|
|
5792
|
+
class="size-10 text-center text-muted-foreground"
|
|
5793
|
+
[title]="weekDayName.long"
|
|
5794
|
+
[attr.aria-label]="weekDayName.long"
|
|
5795
|
+
>
|
|
5796
|
+
{{ weekDayName.short }}
|
|
5797
|
+
</abbr>
|
|
5798
|
+
}
|
|
5799
|
+
|
|
5800
|
+
@for (day of days(); track $index; let index = $index) {
|
|
5801
|
+
<button
|
|
5802
|
+
[ngClass]="{
|
|
5803
|
+
'col-start-1': index === 0 && firstDayMonth() === 0,
|
|
5804
|
+
'col-start-2': index === 0 && firstDayMonth() === 1,
|
|
5805
|
+
'col-start-3': index === 0 && firstDayMonth() === 2,
|
|
5806
|
+
'col-start-4': index === 0 && firstDayMonth() === 3,
|
|
5807
|
+
'col-start-5': index === 0 && firstDayMonth() === 4,
|
|
5808
|
+
'col-start-6': index === 0 && firstDayMonth() === 5,
|
|
5809
|
+
'col-start-7': index === 0 && firstDayMonth() === 6,
|
|
5810
|
+
}"
|
|
5811
|
+
[attr.data-sc-day]="day"
|
|
5812
|
+
[variant]="isSelected(day) ? 'primary' : 'ghost'"
|
|
5813
|
+
(click)="setSelectedDay($event)"
|
|
5814
|
+
sc-button
|
|
5815
|
+
size="icon"
|
|
5816
|
+
>
|
|
5817
|
+
{{ day.slice(-2) }}
|
|
5818
|
+
</button>
|
|
5819
|
+
}
|
|
5820
|
+
`, host: {
|
|
5821
|
+
'[class]': 'classes()',
|
|
5822
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5485
5823
|
}] });
|
|
5486
5824
|
|
|
5487
5825
|
class ScMonthYearHeader {
|
|
5488
|
-
|
|
5826
|
+
class = input('');
|
|
5827
|
+
classes = computed(() => cn('flex justify-between', this.class()));
|
|
5489
5828
|
monthYear = input.required();
|
|
5490
5829
|
monthYearChange = output();
|
|
5491
5830
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScMonthYearHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5492
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScMonthYearHeader, isStandalone: true, selector: "sc-month-year-header", inputs: { monthYear: { classPropertyName: "monthYear", publicName: "monthYear", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { monthYearChange: "monthYearChange" }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
5831
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScMonthYearHeader, isStandalone: true, selector: "sc-month-year-header", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, monthYear: { classPropertyName: "monthYear", publicName: "monthYear", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { monthYearChange: "monthYearChange" }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
5493
5832
|
<button
|
|
5494
|
-
[attr.aria-label]="'Previous month'"
|
|
5495
5833
|
(click)="monthYearChange.emit(-1)"
|
|
5834
|
+
aria-label="Previous month"
|
|
5496
5835
|
sc-button
|
|
5497
5836
|
variant="outline"
|
|
5498
5837
|
type="button"
|
|
@@ -5506,8 +5845,8 @@ class ScMonthYearHeader {
|
|
|
5506
5845
|
</button>
|
|
5507
5846
|
|
|
5508
5847
|
<button
|
|
5509
|
-
[attr.aria-label]="'Next month'"
|
|
5510
5848
|
(click)="monthYearChange.emit(1)"
|
|
5849
|
+
aria-label="Next month"
|
|
5511
5850
|
sc-button
|
|
5512
5851
|
variant="outline"
|
|
5513
5852
|
type="button"
|
|
@@ -5522,8 +5861,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5522
5861
|
type: Component,
|
|
5523
5862
|
args: [{ selector: 'sc-month-year-header', imports: [SvgChevronRightIcon, SvgChevronLeftIcon, ScButton], template: `
|
|
5524
5863
|
<button
|
|
5525
|
-
[attr.aria-label]="'Previous month'"
|
|
5526
5864
|
(click)="monthYearChange.emit(-1)"
|
|
5865
|
+
aria-label="Previous month"
|
|
5527
5866
|
sc-button
|
|
5528
5867
|
variant="outline"
|
|
5529
5868
|
type="button"
|
|
@@ -5537,8 +5876,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5537
5876
|
</button>
|
|
5538
5877
|
|
|
5539
5878
|
<button
|
|
5540
|
-
[attr.aria-label]="'Next month'"
|
|
5541
5879
|
(click)="monthYearChange.emit(1)"
|
|
5880
|
+
aria-label="Next month"
|
|
5542
5881
|
sc-button
|
|
5543
5882
|
variant="outline"
|
|
5544
5883
|
type="button"
|
|
@@ -5552,7 +5891,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5552
5891
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5553
5892
|
}] });
|
|
5554
5893
|
|
|
5555
|
-
class
|
|
5894
|
+
class ScCalendar {
|
|
5895
|
+
class = input('');
|
|
5896
|
+
classes = computed(() => cn('', this.class()));
|
|
5556
5897
|
localeId = inject(LOCALE_ID);
|
|
5557
5898
|
year = signal(0);
|
|
5558
5899
|
month = signal(0);
|
|
@@ -5657,8 +5998,8 @@ class ScInlineDatePicker {
|
|
|
5657
5998
|
useGrouping: false,
|
|
5658
5999
|
});
|
|
5659
6000
|
}
|
|
5660
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type:
|
|
5661
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
6001
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6002
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScCalendar, isStandalone: true, selector: "sc-calendar", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
5662
6003
|
<div sc-card>
|
|
5663
6004
|
<div sc-card-header>
|
|
5664
6005
|
<sc-month-year-header [monthYear]="monthYear()" (monthYearChange)="setMonthYear($event)" />
|
|
@@ -5679,11 +6020,11 @@ class ScInlineDatePicker {
|
|
|
5679
6020
|
<button sc-button type="button">Done</button>
|
|
5680
6021
|
</div>
|
|
5681
6022
|
</div>
|
|
5682
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScMonthYearHeader, selector: "sc-month-year-header", inputs: ["monthYear"], outputs: ["monthYearChange"] }, { kind: "component", type: ScMonthDays, selector: "sc-month-days", inputs: ["weekDaysNames", "days", "firstDayMonth", "selectedDay"], outputs: ["selectedDayChange"] }, { kind: "component", type: ScCard, selector: "div[sc-card]", inputs: ["class"] }, { kind: "component", type: ScCardHeader, selector: "div[sc-card-header]", inputs: ["class"] }, { kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }, { kind: "component", type: ScCardFooter, selector: "div[sc-card-footer]", inputs: ["class"] }, { kind: "component", type: ScCardContent, selector: "div[sc-card-content]", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6023
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScMonthYearHeader, selector: "sc-month-year-header", inputs: ["class", "monthYear"], outputs: ["monthYearChange"] }, { kind: "component", type: ScMonthDays, selector: "sc-month-days", inputs: ["class", "weekDaysNames", "days", "firstDayMonth", "selectedDay"], outputs: ["selectedDayChange"] }, { kind: "component", type: ScCard, selector: "div[sc-card]", inputs: ["class"] }, { kind: "component", type: ScCardHeader, selector: "div[sc-card-header]", inputs: ["class"] }, { kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }, { kind: "component", type: ScCardFooter, selector: "div[sc-card-footer]", inputs: ["class"] }, { kind: "component", type: ScCardContent, selector: "div[sc-card-content]", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5683
6024
|
}
|
|
5684
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type:
|
|
6025
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScCalendar, decorators: [{
|
|
5685
6026
|
type: Component,
|
|
5686
|
-
args: [{ selector: 'sc-
|
|
6027
|
+
args: [{ selector: 'sc-calendar', imports: [
|
|
5687
6028
|
ScMonthYearHeader,
|
|
5688
6029
|
ScMonthDays,
|
|
5689
6030
|
ScCard,
|
|
@@ -5712,10 +6053,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5712
6053
|
<button sc-button type="button">Done</button>
|
|
5713
6054
|
</div>
|
|
5714
6055
|
</div>
|
|
5715
|
-
`,
|
|
6056
|
+
`, host: {
|
|
6057
|
+
'[class]': 'classes()',
|
|
6058
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6059
|
+
}] });
|
|
6060
|
+
|
|
6061
|
+
class ScFullCalendar {
|
|
6062
|
+
class = input('');
|
|
6063
|
+
classes = computed(() => cn('', this.class()));
|
|
6064
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScFullCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6065
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScFullCalendar, isStandalone: true, selector: "sc-full-calendar", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6066
|
+
<ng-content />
|
|
6067
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6068
|
+
}
|
|
6069
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScFullCalendar, decorators: [{
|
|
6070
|
+
type: Component,
|
|
6071
|
+
args: [{ selector: 'sc-full-calendar', imports: [], template: `
|
|
6072
|
+
<ng-content />
|
|
6073
|
+
`, host: {
|
|
6074
|
+
'[class]': 'classes()',
|
|
6075
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6076
|
+
}] });
|
|
6077
|
+
|
|
6078
|
+
class ScInput {
|
|
6079
|
+
class = input('');
|
|
6080
|
+
classes = computed(() => cn('flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', this.class()));
|
|
6081
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6082
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScInput, isStandalone: true, selector: "input[sc-input]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6083
|
+
<ng-content />
|
|
6084
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6085
|
+
}
|
|
6086
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScInput, decorators: [{
|
|
6087
|
+
type: Component,
|
|
6088
|
+
args: [{ selector: 'input[sc-input]', imports: [], template: `
|
|
6089
|
+
<ng-content />
|
|
6090
|
+
`, host: {
|
|
6091
|
+
'[class]': 'classes()',
|
|
6092
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5716
6093
|
}] });
|
|
5717
6094
|
|
|
5718
6095
|
class ScDatePicker {
|
|
6096
|
+
class = input('');
|
|
6097
|
+
classes = computed(() => cn('flex relative', this.class()));
|
|
6098
|
+
host = inject(ElementRef);
|
|
5719
6099
|
localeId = inject(LOCALE_ID);
|
|
5720
6100
|
dateFormatPattern = signal('');
|
|
5721
6101
|
ngOnInit() {
|
|
@@ -5746,7 +6126,7 @@ class ScDatePicker {
|
|
|
5746
6126
|
_overlay = inject(Overlay);
|
|
5747
6127
|
_isOpen = signal(false);
|
|
5748
6128
|
_input = viewChild('input');
|
|
5749
|
-
_overlayOrigin = viewChild('overlayOrigin');
|
|
6129
|
+
// private readonly _overlayOrigin = viewChild<ElementRef<HTMLDivElement>>('overlayOrigin');
|
|
5750
6130
|
_overlayRef = null;
|
|
5751
6131
|
_portal = null;
|
|
5752
6132
|
/** Emits when the datepicker is opened. */
|
|
@@ -5772,7 +6152,7 @@ class ScDatePicker {
|
|
|
5772
6152
|
const overlayRef = this._getOverlayRef();
|
|
5773
6153
|
//overlayRef.updateSize({ width: this._overlayOrigin()?.nativeElement.offsetWidth });
|
|
5774
6154
|
overlayRef.updateSize({ width: 400 });
|
|
5775
|
-
this._portal ??= new ComponentPortal(
|
|
6155
|
+
this._portal ??= new ComponentPortal(ScCalendar);
|
|
5776
6156
|
overlayRef.attach(this._portal);
|
|
5777
6157
|
this.opened.emit();
|
|
5778
6158
|
}
|
|
@@ -5789,7 +6169,7 @@ class ScDatePicker {
|
|
|
5789
6169
|
if (this._overlayRef) {
|
|
5790
6170
|
return this._overlayRef;
|
|
5791
6171
|
}
|
|
5792
|
-
const _overlayOrigin = this.
|
|
6172
|
+
const _overlayOrigin = this.host;
|
|
5793
6173
|
if (_overlayOrigin === undefined) {
|
|
5794
6174
|
throw new Error('_overlayOrigin is undefined');
|
|
5795
6175
|
}
|
|
@@ -5825,7 +6205,7 @@ class ScDatePicker {
|
|
|
5825
6205
|
});
|
|
5826
6206
|
this._overlayRef.outsidePointerEvents().subscribe((event) => {
|
|
5827
6207
|
const target = _getEventTarget(event);
|
|
5828
|
-
const origin = this.
|
|
6208
|
+
const origin = this.host?.nativeElement;
|
|
5829
6209
|
if (target && target !== origin && !origin?.contains(target)) {
|
|
5830
6210
|
this.close();
|
|
5831
6211
|
}
|
|
@@ -5839,27 +6219,23 @@ class ScDatePicker {
|
|
|
5839
6219
|
this._input()?.nativeElement.focus();
|
|
5840
6220
|
}
|
|
5841
6221
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScDatePicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5842
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: ScDatePicker, isStandalone: true, selector: "sc-date-picker",
|
|
5843
|
-
|
|
5844
|
-
|
|
5845
|
-
|
|
5846
|
-
|
|
5847
|
-
|
|
5848
|
-
<input #input sc-input type="text" placeholder="Select date" />
|
|
5849
|
-
</div>
|
|
5850
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScInput, selector: "input[sc-input]", inputs: ["class"] }, { kind: "component", type: SvgCalendarIcon, selector: "svg-calendar-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6222
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: ScDatePicker, isStandalone: true, selector: "sc-date-picker", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "opened", closed: "closed", selected: "selected" }, host: { properties: { "class": "classes()" } }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
6223
|
+
<button class="absolute inset-y-0 end-0 pe-4" (click)="open()" sc-button variant="ghost">
|
|
6224
|
+
<svg-calendar-icon />
|
|
6225
|
+
</button>
|
|
6226
|
+
<input #input sc-input type="text" placeholder="Select date" />
|
|
6227
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScInput, selector: "input[sc-input]", inputs: ["class"] }, { kind: "component", type: SvgCalendarIcon, selector: "svg-calendar-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5851
6228
|
}
|
|
5852
6229
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScDatePicker, decorators: [{
|
|
5853
6230
|
type: Component,
|
|
5854
|
-
args: [{ selector: 'sc-date-picker', imports: [ScInput, SvgCalendarIcon], template: `
|
|
5855
|
-
|
|
5856
|
-
|
|
5857
|
-
|
|
5858
|
-
|
|
5859
|
-
|
|
5860
|
-
|
|
5861
|
-
|
|
5862
|
-
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6231
|
+
args: [{ selector: 'sc-date-picker', imports: [ScInput, SvgCalendarIcon, ScButton], template: `
|
|
6232
|
+
<button class="absolute inset-y-0 end-0 pe-4" (click)="open()" sc-button variant="ghost">
|
|
6233
|
+
<svg-calendar-icon />
|
|
6234
|
+
</button>
|
|
6235
|
+
<input #input sc-input type="text" placeholder="Select date" />
|
|
6236
|
+
`, host: {
|
|
6237
|
+
'[class]': 'classes()',
|
|
6238
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5863
6239
|
}] });
|
|
5864
6240
|
|
|
5865
6241
|
class ScNav {
|
|
@@ -6125,1648 +6501,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
6125
6501
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6126
6502
|
}] });
|
|
6127
6503
|
|
|
6128
|
-
class
|
|
6129
|
-
|
|
6130
|
-
|
|
6131
|
-
|
|
6132
|
-
|
|
6133
|
-
|
|
6134
|
-
|
|
6504
|
+
class ScProgress {
|
|
6505
|
+
class = input('');
|
|
6506
|
+
classes = computed(() => cn('block relative h-4 w-full overflow-hidden rounded-full bg-secondary', this.class()));
|
|
6507
|
+
/** Current value of the progressbar. */
|
|
6508
|
+
value = input(0);
|
|
6509
|
+
transform = computed(() => {
|
|
6510
|
+
return `translateX(-${100 - this.value()}%)`;
|
|
6511
|
+
});
|
|
6512
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScProgress, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6513
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScProgress, isStandalone: true, selector: "sc-progress", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar", "aria-valuemin": "0", "aria-valuemax": "100" }, properties: { "attr.aria-valuenow": "value()", "class": "classes()" } }, ngImport: i0, template: `
|
|
6514
|
+
<div class="size-full flex-1 bg-primary transition-all" [style.transform]="transform()"></div>
|
|
6515
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6135
6516
|
}
|
|
6136
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type:
|
|
6137
|
-
type:
|
|
6517
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScProgress, decorators: [{
|
|
6518
|
+
type: Component,
|
|
6519
|
+
args: [{ selector: 'sc-progress', imports: [], template: `
|
|
6520
|
+
<div class="size-full flex-1 bg-primary transition-all" [style.transform]="transform()"></div>
|
|
6521
|
+
`, host: {
|
|
6522
|
+
// Sets the role for this component to "progressbar"
|
|
6523
|
+
role: 'progressbar',
|
|
6524
|
+
// Sets the minimum and maximum values for the progressbar role.
|
|
6525
|
+
'aria-valuemin': '0',
|
|
6526
|
+
'aria-valuemax': '100',
|
|
6527
|
+
// Binding that updates the current value of the progressbar.
|
|
6528
|
+
'[attr.aria-valuenow]': 'value()',
|
|
6529
|
+
'[class]': 'classes()',
|
|
6530
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6138
6531
|
}] });
|
|
6139
6532
|
|
|
6140
|
-
|
|
6141
|
-
|
|
6142
|
-
|
|
6143
|
-
|
|
6144
|
-
|
|
6533
|
+
const scOverlayClasses = signal([
|
|
6534
|
+
'bg-black/80',
|
|
6535
|
+
'data-[state=open]:animate-in',
|
|
6536
|
+
'data-[state=closed]:animate-out',
|
|
6537
|
+
'data-[state=closed]:fade-out-0',
|
|
6538
|
+
'data-[state=open]:fade-in-0',
|
|
6539
|
+
]);
|
|
6540
|
+
|
|
6541
|
+
class ScSheetContainer {
|
|
6542
|
+
class = input('');
|
|
6543
|
+
classes = computed(() => cn('block size-full', this.class()));
|
|
6544
|
+
templateRef = signal(null);
|
|
6545
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6546
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScSheetContainer, isStandalone: true, selector: "sc-sheet-container", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6547
|
+
@if (templateRef()) {
|
|
6548
|
+
<ng-container *ngTemplateOutlet="templateRef()"></ng-container>
|
|
6145
6549
|
}
|
|
6146
|
-
|
|
6147
|
-
|
|
6550
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6551
|
+
}
|
|
6552
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetContainer, decorators: [{
|
|
6553
|
+
type: Component,
|
|
6554
|
+
args: [{ selector: 'sc-sheet-container', imports: [NgTemplateOutlet], template: `
|
|
6555
|
+
@if (templateRef()) {
|
|
6556
|
+
<ng-container *ngTemplateOutlet="templateRef()"></ng-container>
|
|
6557
|
+
}
|
|
6558
|
+
`, host: {
|
|
6559
|
+
'[class]': 'classes()',
|
|
6560
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6561
|
+
}] });
|
|
6562
|
+
|
|
6563
|
+
class ScSheetTrigger {
|
|
6564
|
+
_overlayContainer = inject(OverlayContainer);
|
|
6148
6565
|
_overlay = inject(Overlay);
|
|
6149
|
-
|
|
6150
|
-
|
|
6151
|
-
|
|
6152
|
-
scSelectTrigger = viewChild.required('scSelectTrigger');
|
|
6153
|
-
_panelTemplate = viewChild.required('panelTemplate');
|
|
6154
|
-
placeholder = input('');
|
|
6566
|
+
_overlayRef;
|
|
6567
|
+
state = signal('closed');
|
|
6568
|
+
side = signal('right');
|
|
6155
6569
|
constructor() {
|
|
6156
|
-
this.id = ++ScSelect.nextId;
|
|
6157
6570
|
effect(() => {
|
|
6158
|
-
|
|
6159
|
-
|
|
6160
|
-
const closeOverlay = this.state.closeOverlay();
|
|
6161
|
-
if (closeOverlay) {
|
|
6162
|
-
this.close();
|
|
6163
|
-
this.state.closeOverlay.set(false);
|
|
6571
|
+
if (this.state() === 'open') {
|
|
6572
|
+
this._overlayContainer.getContainerElement().classList.add(...scOverlayClasses());
|
|
6164
6573
|
}
|
|
6165
|
-
|
|
6166
|
-
|
|
6167
|
-
_value = signal('');
|
|
6168
|
-
isDisabled = signal(false);
|
|
6169
|
-
writeValue(value) {
|
|
6170
|
-
this._value.set(value);
|
|
6171
|
-
}
|
|
6172
|
-
setValue(value) {
|
|
6173
|
-
this._value.set(value);
|
|
6174
|
-
this._onChange(value);
|
|
6175
|
-
this._cdr.markForCheck();
|
|
6176
|
-
}
|
|
6177
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
6178
|
-
_onChange = () => { };
|
|
6179
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
6180
|
-
_onTouched = () => { };
|
|
6181
|
-
registerOnChange(fn) {
|
|
6182
|
-
this._onChange = fn;
|
|
6183
|
-
}
|
|
6184
|
-
registerOnTouched(fn) {
|
|
6185
|
-
this._onTouched = fn;
|
|
6186
|
-
}
|
|
6187
|
-
setDisabledState(isDisabled) {
|
|
6188
|
-
this.isDisabled.set(isDisabled);
|
|
6189
|
-
}
|
|
6190
|
-
label = computed(() => {
|
|
6191
|
-
if (this.state.selectedLabel()) {
|
|
6192
|
-
return this.state.selectedLabel();
|
|
6193
|
-
}
|
|
6194
|
-
return this.placeholder();
|
|
6195
|
-
});
|
|
6196
|
-
_isExpanded = computed(() => {
|
|
6197
|
-
return this.state.isOpen();
|
|
6198
|
-
});
|
|
6199
|
-
_overlayRef = null;
|
|
6200
|
-
_getOverlayRef() {
|
|
6201
|
-
if (this._overlayRef) {
|
|
6202
|
-
return this._overlayRef;
|
|
6203
|
-
}
|
|
6204
|
-
const positionStrategy = this._overlay
|
|
6205
|
-
.position()
|
|
6206
|
-
.flexibleConnectedTo(this.scSelectTrigger())
|
|
6207
|
-
.withFlexibleDimensions(false)
|
|
6208
|
-
.withPush(false)
|
|
6209
|
-
.withPositions([
|
|
6210
|
-
{
|
|
6211
|
-
originX: 'start',
|
|
6212
|
-
originY: 'bottom',
|
|
6213
|
-
overlayX: 'start',
|
|
6214
|
-
overlayY: 'top',
|
|
6215
|
-
offsetY: 8,
|
|
6216
|
-
},
|
|
6217
|
-
{
|
|
6218
|
-
originX: 'start',
|
|
6219
|
-
originY: 'top',
|
|
6220
|
-
overlayX: 'start',
|
|
6221
|
-
overlayY: 'bottom',
|
|
6222
|
-
offsetY: -8,
|
|
6223
|
-
},
|
|
6224
|
-
]);
|
|
6225
|
-
this._overlayRef = this._overlay.create({
|
|
6226
|
-
positionStrategy,
|
|
6227
|
-
scrollStrategy: this._overlay.scrollStrategies.reposition(),
|
|
6228
|
-
direction: this._dir || 'ltr',
|
|
6229
|
-
hasBackdrop: false,
|
|
6230
|
-
});
|
|
6231
|
-
this._overlayRef.keydownEvents().subscribe((event) => {
|
|
6232
|
-
this._handleKeydown(event);
|
|
6233
|
-
});
|
|
6234
|
-
this._overlayRef.outsidePointerEvents().subscribe((event) => {
|
|
6235
|
-
const target = _getEventTarget(event);
|
|
6236
|
-
const origin = this.scSelectTrigger().nativeElement;
|
|
6237
|
-
if (target && target !== origin && !origin.contains(target)) {
|
|
6238
|
-
this.close();
|
|
6574
|
+
if (this.state() === 'closed') {
|
|
6575
|
+
this._overlayContainer.getContainerElement().classList.remove(...scOverlayClasses());
|
|
6239
6576
|
}
|
|
6577
|
+
this._overlayContainer.getContainerElement().setAttribute('data-state', this.state());
|
|
6240
6578
|
});
|
|
6241
|
-
|
|
6242
|
-
|
|
6243
|
-
|
|
6244
|
-
|
|
6245
|
-
|
|
6246
|
-
|
|
6247
|
-
|
|
6248
|
-
const
|
|
6249
|
-
|
|
6250
|
-
this.
|
|
6251
|
-
|
|
6252
|
-
|
|
6253
|
-
|
|
6254
|
-
|
|
6255
|
-
this.state.
|
|
6256
|
-
|
|
6257
|
-
|
|
6258
|
-
|
|
6259
|
-
|
|
6260
|
-
|
|
6261
|
-
|
|
6262
|
-
|
|
6263
|
-
|
|
6264
|
-
|
|
6265
|
-
|
|
6266
|
-
|
|
6267
|
-
|
|
6268
|
-
|
|
6269
|
-
|
|
6270
|
-
|
|
6271
|
-
|
|
6272
|
-
|
|
6273
|
-
|
|
6274
|
-
|
|
6275
|
-
|
|
6276
|
-
|
|
6277
|
-
|
|
6278
|
-
|
|
6279
|
-
|
|
6280
|
-
|
|
6281
|
-
|
|
6282
|
-
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
|
|
6286
|
-
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6290
|
-
|
|
6291
|
-
|
|
6292
|
-
|
|
6293
|
-
|
|
6294
|
-
|
|
6295
|
-
|
|
6296
|
-
|
|
6297
|
-
|
|
6298
|
-
|
|
6299
|
-
|
|
6300
|
-
|
|
6301
|
-
|
|
6302
|
-
|
|
6303
|
-
|
|
6304
|
-
|
|
6305
|
-
|
|
6306
|
-
args: [{ selector: 'sc-select', imports: [SvgChevronDownIcon, OverlayModule], template: `
|
|
6307
|
-
<button
|
|
6308
|
-
class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1"
|
|
6309
|
-
#scSelectTrigger
|
|
6310
|
-
[disabled]="isDisabled()"
|
|
6311
|
-
[attr.aria-expanded]="_isExpanded()"
|
|
6312
|
-
[attr.aria-controls]="_getPanelId()"
|
|
6313
|
-
(click)="open()"
|
|
6314
|
-
type="button"
|
|
6315
|
-
role="combobox"
|
|
6316
|
-
>
|
|
6317
|
-
{{ label() }}
|
|
6318
|
-
<svg-chevron-down-icon class="size-4 opacity-50" />
|
|
6319
|
-
</button>
|
|
6320
|
-
|
|
6321
|
-
<ng-template #panelTemplate>
|
|
6322
|
-
<div
|
|
6323
|
-
class="relative z-50 max-h-96 w-full min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"
|
|
6324
|
-
[id]="_getPanelId()"
|
|
6325
|
-
>
|
|
6326
|
-
<ng-content />
|
|
6327
|
-
</div>
|
|
6328
|
-
</ng-template>
|
|
6329
|
-
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
6330
|
-
{
|
|
6331
|
-
provide: NG_VALUE_ACCESSOR,
|
|
6332
|
-
useExisting: forwardRef(() => ScSelect),
|
|
6333
|
-
multi: true,
|
|
6334
|
-
},
|
|
6335
|
-
ScSelectState,
|
|
6336
|
-
] }]
|
|
6337
|
-
}], ctorParameters: () => [] });
|
|
6338
|
-
|
|
6339
|
-
class ScOption {
|
|
6340
|
-
state = inject(ScSelectState);
|
|
6341
|
-
value = input.required();
|
|
6342
|
-
label = viewChild.required('label');
|
|
6343
|
-
select() {
|
|
6344
|
-
this.state.selectedValue.set(this.value());
|
|
6345
|
-
this.state.selectedLabel.set(this.label().nativeElement.textContent ?? '');
|
|
6346
|
-
this.state.closeOverlay.set(true);
|
|
6347
|
-
}
|
|
6348
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScOption, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6349
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScOption, isStandalone: true, selector: "sc-option", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "label", first: true, predicate: ["label"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
6350
|
-
<button
|
|
6351
|
-
class="relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
|
|
6352
|
-
(click)="select()"
|
|
6353
|
-
type="button"
|
|
6354
|
-
>
|
|
6355
|
-
@if (state.selectedValue() === value()) {
|
|
6356
|
-
<span class="absolute left-2 flex size-3.5 items-center justify-center">
|
|
6357
|
-
<svg-check-icon class="size-4" />
|
|
6358
|
-
</span>
|
|
6359
|
-
}
|
|
6360
|
-
|
|
6361
|
-
<span #label>
|
|
6362
|
-
<ng-content />
|
|
6363
|
-
</span>
|
|
6364
|
-
</button>
|
|
6365
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: SvgCheckIcon, selector: "svg-check-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6366
|
-
}
|
|
6367
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScOption, decorators: [{
|
|
6368
|
-
type: Component,
|
|
6369
|
-
args: [{ selector: 'sc-option', imports: [SvgCheckIcon], template: `
|
|
6370
|
-
<button
|
|
6371
|
-
class="relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
|
|
6372
|
-
(click)="select()"
|
|
6373
|
-
type="button"
|
|
6374
|
-
>
|
|
6375
|
-
@if (state.selectedValue() === value()) {
|
|
6376
|
-
<span class="absolute left-2 flex size-3.5 items-center justify-center">
|
|
6377
|
-
<svg-check-icon class="size-4" />
|
|
6378
|
-
</span>
|
|
6379
|
-
}
|
|
6380
|
-
|
|
6381
|
-
<span #label>
|
|
6382
|
-
<ng-content />
|
|
6383
|
-
</span>
|
|
6384
|
-
</button>
|
|
6385
|
-
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6386
|
-
}] });
|
|
6387
|
-
|
|
6388
|
-
class ScProgress {
|
|
6389
|
-
class = input('');
|
|
6390
|
-
classes = computed(() => cn('block relative h-4 w-full overflow-hidden rounded-full bg-secondary', this.class()));
|
|
6391
|
-
/** Current value of the progressbar. */
|
|
6392
|
-
value = input(0);
|
|
6393
|
-
transform = computed(() => {
|
|
6394
|
-
return `translateX(-${100 - this.value()}%)`;
|
|
6395
|
-
});
|
|
6396
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScProgress, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6397
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScProgress, isStandalone: true, selector: "sc-progress", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar", "aria-valuemin": "0", "aria-valuemax": "100" }, properties: { "attr.aria-valuenow": "value()", "class": "classes()" } }, ngImport: i0, template: `
|
|
6398
|
-
<div class="size-full flex-1 bg-primary transition-all" [style.transform]="transform()"></div>
|
|
6399
|
-
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6400
|
-
}
|
|
6401
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScProgress, decorators: [{
|
|
6402
|
-
type: Component,
|
|
6403
|
-
args: [{ selector: 'sc-progress', imports: [], template: `
|
|
6404
|
-
<div class="size-full flex-1 bg-primary transition-all" [style.transform]="transform()"></div>
|
|
6405
|
-
`, host: {
|
|
6406
|
-
// Sets the role for this component to "progressbar"
|
|
6407
|
-
role: 'progressbar',
|
|
6408
|
-
// Sets the minimum and maximum values for the progressbar role.
|
|
6409
|
-
'aria-valuemin': '0',
|
|
6410
|
-
'aria-valuemax': '100',
|
|
6411
|
-
// Binding that updates the current value of the progressbar.
|
|
6412
|
-
'[attr.aria-valuenow]': 'value()',
|
|
6413
|
-
'[class]': 'classes()',
|
|
6414
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6415
|
-
}] });
|
|
6416
|
-
|
|
6417
|
-
class ScSheetTrigger {
|
|
6418
|
-
_overlayContainer = inject(OverlayContainer);
|
|
6419
|
-
overlay = inject(Overlay);
|
|
6420
|
-
overlayRef;
|
|
6421
|
-
open = signal(false);
|
|
6422
|
-
openSheet() {
|
|
6423
|
-
const side = 'left';
|
|
6424
|
-
this._overlayContainer.getContainerElement().classList.add('sc-overlay-container');
|
|
6425
|
-
const positionStrategy = this.getPositionStrategy(side);
|
|
6426
|
-
this.overlayRef = this.overlay.create({ positionStrategy });
|
|
6427
|
-
this.updateSize(side);
|
|
6428
|
-
const tooltipPortal = new ComponentPortal(ScSheet);
|
|
6429
|
-
const tooltipRef = this.overlayRef.attach(tooltipPortal);
|
|
6430
|
-
tooltipRef.instance.side.set(side);
|
|
6431
|
-
}
|
|
6432
|
-
toggle() {
|
|
6433
|
-
if (this.overlayRef?.hasAttached() === true) {
|
|
6434
|
-
this.overlayRef?.detach();
|
|
6435
|
-
this.open.set(false);
|
|
6436
|
-
this._overlayContainer.getContainerElement().classList.remove('sc-overlay-container');
|
|
6437
|
-
}
|
|
6438
|
-
else {
|
|
6439
|
-
this.openSheet();
|
|
6440
|
-
this.open.set(true);
|
|
6441
|
-
}
|
|
6442
|
-
}
|
|
6443
|
-
getPositionStrategy(side) {
|
|
6444
|
-
return this.overlay
|
|
6445
|
-
.position()
|
|
6446
|
-
.flexibleConnectedTo(this._overlayContainer.getContainerElement())
|
|
6447
|
-
.withPositions(this.getPositions(side));
|
|
6448
|
-
}
|
|
6449
|
-
getPositions(side) {
|
|
6450
|
-
switch (side) {
|
|
6451
|
-
case 'top': {
|
|
6452
|
-
return [
|
|
6453
|
-
{
|
|
6454
|
-
originX: 'start',
|
|
6455
|
-
originY: 'top',
|
|
6456
|
-
overlayX: 'start',
|
|
6457
|
-
overlayY: 'top',
|
|
6458
|
-
},
|
|
6459
|
-
];
|
|
6460
|
-
}
|
|
6461
|
-
case 'bottom': {
|
|
6462
|
-
return [
|
|
6463
|
-
{
|
|
6464
|
-
originX: 'end',
|
|
6465
|
-
originY: 'bottom',
|
|
6466
|
-
overlayX: 'end',
|
|
6467
|
-
overlayY: 'bottom',
|
|
6468
|
-
},
|
|
6469
|
-
];
|
|
6470
|
-
}
|
|
6471
|
-
case 'left': {
|
|
6472
|
-
return [
|
|
6473
|
-
{
|
|
6474
|
-
originX: 'start',
|
|
6475
|
-
originY: 'top',
|
|
6476
|
-
overlayX: 'start',
|
|
6477
|
-
overlayY: 'top',
|
|
6478
|
-
},
|
|
6479
|
-
];
|
|
6480
|
-
}
|
|
6481
|
-
case 'right': {
|
|
6482
|
-
return [
|
|
6483
|
-
{
|
|
6484
|
-
originX: 'end',
|
|
6485
|
-
originY: 'top',
|
|
6486
|
-
overlayX: 'end',
|
|
6487
|
-
overlayY: 'top',
|
|
6488
|
-
},
|
|
6489
|
-
];
|
|
6490
|
-
}
|
|
6491
|
-
default: {
|
|
6492
|
-
throw new Error('Error in switch case');
|
|
6493
|
-
}
|
|
6494
|
-
}
|
|
6495
|
-
}
|
|
6496
|
-
updateSize(side) {
|
|
6497
|
-
switch (side) {
|
|
6498
|
-
case 'top': {
|
|
6499
|
-
this.overlayRef.updateSize({ height: 300, width: '100%' });
|
|
6500
|
-
return;
|
|
6501
|
-
}
|
|
6502
|
-
case 'bottom': {
|
|
6503
|
-
this.overlayRef.updateSize({ height: 300, width: '100%' });
|
|
6504
|
-
return;
|
|
6505
|
-
}
|
|
6506
|
-
case 'left': {
|
|
6507
|
-
this.overlayRef.updateSize({ width: 620 });
|
|
6508
|
-
return;
|
|
6509
|
-
}
|
|
6510
|
-
case 'right': {
|
|
6511
|
-
this.overlayRef.updateSize({ width: 620 });
|
|
6512
|
-
return;
|
|
6513
|
-
}
|
|
6514
|
-
default: {
|
|
6515
|
-
throw new Error('Error in switch case');
|
|
6516
|
-
}
|
|
6517
|
-
}
|
|
6518
|
-
}
|
|
6519
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6520
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, providedIn: 'root' });
|
|
6521
|
-
}
|
|
6522
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, decorators: [{
|
|
6523
|
-
type: Injectable,
|
|
6524
|
-
args: [{
|
|
6525
|
-
providedIn: 'root',
|
|
6526
|
-
}]
|
|
6527
|
-
}] });
|
|
6528
|
-
|
|
6529
|
-
class ScSheetToggler {
|
|
6530
|
-
sidebarState = inject(ScSheetTrigger);
|
|
6531
|
-
class = input('');
|
|
6532
|
-
classes = computed(() => cn('', this.class()));
|
|
6533
|
-
toggle() {
|
|
6534
|
-
this.sidebarState.toggle();
|
|
6535
|
-
}
|
|
6536
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetToggler, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6537
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScSheetToggler, isStandalone: true, selector: "sc-sheet-toggler", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
6538
|
-
<button
|
|
6539
|
-
[class]="classes()"
|
|
6540
|
-
(click)="toggle()"
|
|
6541
|
-
sc-button
|
|
6542
|
-
data-sidebar="trigger"
|
|
6543
|
-
variant="ghost"
|
|
6544
|
-
size="icon"
|
|
6545
|
-
type="button"
|
|
6546
|
-
>
|
|
6547
|
-
@if (sidebarState.open()) {
|
|
6548
|
-
<svg-x-icon />
|
|
6549
|
-
}
|
|
6550
|
-
|
|
6551
|
-
@if (!sidebarState.open()) {
|
|
6552
|
-
<svg-menu-icon />
|
|
6553
|
-
}
|
|
6554
|
-
|
|
6555
|
-
<span class="sr-only">Toggle Sidebar</span>
|
|
6556
|
-
</button>
|
|
6557
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }, { kind: "component", type: SvgMenuIcon, selector: "svg-menu-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: SvgXIcon, selector: "svg-x-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6558
|
-
}
|
|
6559
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetToggler, decorators: [{
|
|
6560
|
-
type: Component,
|
|
6561
|
-
args: [{ selector: 'sc-sheet-toggler', imports: [ScButton, SvgMenuIcon, SvgXIcon], template: `
|
|
6562
|
-
<button
|
|
6563
|
-
[class]="classes()"
|
|
6564
|
-
(click)="toggle()"
|
|
6565
|
-
sc-button
|
|
6566
|
-
data-sidebar="trigger"
|
|
6567
|
-
variant="ghost"
|
|
6568
|
-
size="icon"
|
|
6569
|
-
type="button"
|
|
6570
|
-
>
|
|
6571
|
-
@if (sidebarState.open()) {
|
|
6572
|
-
<svg-x-icon />
|
|
6573
|
-
}
|
|
6574
|
-
|
|
6575
|
-
@if (!sidebarState.open()) {
|
|
6576
|
-
<svg-menu-icon />
|
|
6577
|
-
}
|
|
6578
|
-
|
|
6579
|
-
<span class="sr-only">Toggle Sidebar</span>
|
|
6580
|
-
</button>
|
|
6581
|
-
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6582
|
-
}] });
|
|
6583
|
-
|
|
6584
|
-
class ScScrollArea {
|
|
6585
|
-
host = inject(ElementRef);
|
|
6586
|
-
class = input('');
|
|
6587
|
-
classes = computed(() => cn('', this.class()));
|
|
6588
|
-
visibility = input('native');
|
|
6589
|
-
//TODO remove use of ngAfterViewInit
|
|
6590
|
-
ngAfterViewInit() {
|
|
6591
|
-
const height = this.host.nativeElement.scrollHeight;
|
|
6592
|
-
console.log(height);
|
|
6593
|
-
}
|
|
6594
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScScrollArea, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6595
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScScrollArea, isStandalone: true, selector: "div[sc-scroll-area]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, visibility: { classPropertyName: "visibility", publicName: "visibility", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6596
|
-
<ng-scrollbar
|
|
6597
|
-
[visibility]="visibility()"
|
|
6598
|
-
[style]="{
|
|
6599
|
-
'--scrollbar-border-radius': '100px',
|
|
6600
|
-
'--scrollbar-padding': '1px',
|
|
6601
|
-
'--scrollbar-thumb-color': 'hsl(var(--border))',
|
|
6602
|
-
'--scrollbar-thumb-hover-color': 'hsl(var(--border))',
|
|
6603
|
-
'--scrollbar-size': '7px',
|
|
6604
|
-
}"
|
|
6605
|
-
>
|
|
6606
|
-
<ng-content />
|
|
6607
|
-
</ng-scrollbar>
|
|
6608
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: NgScrollbarModule }, { kind: "component", type: i1$1.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6609
|
-
}
|
|
6610
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScScrollArea, decorators: [{
|
|
6611
|
-
type: Component,
|
|
6612
|
-
args: [{ selector: 'div[sc-scroll-area]', imports: [NgScrollbarModule], template: `
|
|
6613
|
-
<ng-scrollbar
|
|
6614
|
-
[visibility]="visibility()"
|
|
6615
|
-
[style]="{
|
|
6616
|
-
'--scrollbar-border-radius': '100px',
|
|
6617
|
-
'--scrollbar-padding': '1px',
|
|
6618
|
-
'--scrollbar-thumb-color': 'hsl(var(--border))',
|
|
6619
|
-
'--scrollbar-thumb-hover-color': 'hsl(var(--border))',
|
|
6620
|
-
'--scrollbar-size': '7px',
|
|
6621
|
-
}"
|
|
6622
|
-
>
|
|
6623
|
-
<ng-content />
|
|
6624
|
-
</ng-scrollbar>
|
|
6625
|
-
`, host: {
|
|
6626
|
-
'[class]': 'classes()',
|
|
6627
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6628
|
-
}] });
|
|
6629
|
-
|
|
6630
|
-
class SidebarContent {
|
|
6631
|
-
class = input('');
|
|
6632
|
-
classes = computed(() => cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', this.class()));
|
|
6633
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SidebarContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6634
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: SidebarContent, isStandalone: true, selector: "app-sidebar-content", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6635
|
-
<div class="w-full pl-5 pt-5" sc-scroll-area>
|
|
6636
|
-
<div class="pb-4">
|
|
6637
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Getting Started</h4>
|
|
6638
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
6639
|
-
<a
|
|
6640
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6641
|
-
target=""
|
|
6642
|
-
rel=""
|
|
6643
|
-
href="/docs"
|
|
6644
|
-
>
|
|
6645
|
-
Introduction
|
|
6646
|
-
</a>
|
|
6647
|
-
<a
|
|
6648
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6649
|
-
target=""
|
|
6650
|
-
rel=""
|
|
6651
|
-
href="/docs/installation"
|
|
6652
|
-
>
|
|
6653
|
-
Installation
|
|
6654
|
-
</a>
|
|
6655
|
-
<a
|
|
6656
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6657
|
-
target=""
|
|
6658
|
-
rel=""
|
|
6659
|
-
href="/docs/components-json"
|
|
6660
|
-
>
|
|
6661
|
-
components.json
|
|
6662
|
-
</a>
|
|
6663
|
-
<a
|
|
6664
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6665
|
-
target=""
|
|
6666
|
-
rel=""
|
|
6667
|
-
href="/docs/theming"
|
|
6668
|
-
>
|
|
6669
|
-
Theming
|
|
6670
|
-
</a>
|
|
6671
|
-
<a
|
|
6672
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6673
|
-
target=""
|
|
6674
|
-
rel=""
|
|
6675
|
-
href="/docs/dark-mode"
|
|
6676
|
-
>
|
|
6677
|
-
Dark mode
|
|
6678
|
-
</a>
|
|
6679
|
-
<a
|
|
6680
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6681
|
-
target=""
|
|
6682
|
-
rel=""
|
|
6683
|
-
href="/docs/cli"
|
|
6684
|
-
>
|
|
6685
|
-
CLI
|
|
6686
|
-
</a>
|
|
6687
|
-
<a
|
|
6688
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6689
|
-
target=""
|
|
6690
|
-
rel=""
|
|
6691
|
-
href="/docs/react-19"
|
|
6692
|
-
>
|
|
6693
|
-
Next.js 15 + React 19
|
|
6694
|
-
</a>
|
|
6695
|
-
<a
|
|
6696
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6697
|
-
target=""
|
|
6698
|
-
rel=""
|
|
6699
|
-
href="/docs/components/typography"
|
|
6700
|
-
>
|
|
6701
|
-
Typography
|
|
6702
|
-
</a>
|
|
6703
|
-
<a
|
|
6704
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6705
|
-
target=""
|
|
6706
|
-
rel=""
|
|
6707
|
-
href="/docs/v0"
|
|
6708
|
-
>
|
|
6709
|
-
Open in v0
|
|
6710
|
-
</a>
|
|
6711
|
-
<a
|
|
6712
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6713
|
-
target=""
|
|
6714
|
-
rel=""
|
|
6715
|
-
href="/docs/figma"
|
|
6716
|
-
>
|
|
6717
|
-
Figma
|
|
6718
|
-
</a>
|
|
6719
|
-
<a
|
|
6720
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6721
|
-
target=""
|
|
6722
|
-
rel=""
|
|
6723
|
-
href="/docs/changelog"
|
|
6724
|
-
>
|
|
6725
|
-
Changelog
|
|
6726
|
-
</a>
|
|
6727
|
-
</div>
|
|
6728
|
-
</div>
|
|
6729
|
-
<div class="pb-4">
|
|
6730
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Installation</h4>
|
|
6731
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
6732
|
-
<a
|
|
6733
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6734
|
-
target=""
|
|
6735
|
-
rel=""
|
|
6736
|
-
href="/docs/installation/next"
|
|
6737
|
-
>
|
|
6738
|
-
Next.js
|
|
6739
|
-
</a>
|
|
6740
|
-
<a
|
|
6741
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6742
|
-
target=""
|
|
6743
|
-
rel=""
|
|
6744
|
-
href="/docs/installation/vite"
|
|
6745
|
-
>
|
|
6746
|
-
Vite
|
|
6747
|
-
</a>
|
|
6748
|
-
<a
|
|
6749
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6750
|
-
target=""
|
|
6751
|
-
rel=""
|
|
6752
|
-
href="/docs/installation/remix"
|
|
6753
|
-
>
|
|
6754
|
-
Remix
|
|
6755
|
-
</a>
|
|
6756
|
-
<a
|
|
6757
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6758
|
-
target=""
|
|
6759
|
-
rel=""
|
|
6760
|
-
href="/docs/installation/astro"
|
|
6761
|
-
>
|
|
6762
|
-
Astro
|
|
6763
|
-
</a>
|
|
6764
|
-
<a
|
|
6765
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6766
|
-
target=""
|
|
6767
|
-
rel=""
|
|
6768
|
-
href="/docs/installation/laravel"
|
|
6769
|
-
>
|
|
6770
|
-
Laravel
|
|
6771
|
-
</a>
|
|
6772
|
-
<a
|
|
6773
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6774
|
-
target=""
|
|
6775
|
-
rel=""
|
|
6776
|
-
href="/docs/installation/gatsby"
|
|
6777
|
-
>
|
|
6778
|
-
Gatsby
|
|
6779
|
-
</a>
|
|
6780
|
-
<a
|
|
6781
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6782
|
-
target=""
|
|
6783
|
-
rel=""
|
|
6784
|
-
href="/docs/installation/manual"
|
|
6785
|
-
>
|
|
6786
|
-
Manual
|
|
6787
|
-
</a>
|
|
6788
|
-
</div>
|
|
6789
|
-
</div>
|
|
6790
|
-
<div class="pb-4">
|
|
6791
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Components</h4>
|
|
6792
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
6793
|
-
<a
|
|
6794
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
6795
|
-
routerLink="/editor"
|
|
6796
|
-
>
|
|
6797
|
-
Editor
|
|
6798
|
-
</a>
|
|
6799
|
-
<a
|
|
6800
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
6801
|
-
routerLink="/theme-toggler"
|
|
6802
|
-
>
|
|
6803
|
-
Theme toggler
|
|
6804
|
-
</a>
|
|
6805
|
-
<a
|
|
6806
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
6807
|
-
routerLink="/dropdown"
|
|
6808
|
-
>
|
|
6809
|
-
Dropdown
|
|
6810
|
-
</a>
|
|
6811
|
-
<a
|
|
6812
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6813
|
-
target=""
|
|
6814
|
-
rel=""
|
|
6815
|
-
href="/docs/components/sidebar"
|
|
6816
|
-
>
|
|
6817
|
-
Sidebar
|
|
6818
|
-
<span
|
|
6819
|
-
class="ml-2 rounded-md bg-[#adfa1d] px-1.5 py-0.5 text-xs leading-none text-[#000000] no-underline group-hover:no-underline"
|
|
6820
|
-
>
|
|
6821
|
-
New
|
|
6822
|
-
</span>
|
|
6823
|
-
</a>
|
|
6824
|
-
|
|
6825
|
-
<a
|
|
6826
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
6827
|
-
target=""
|
|
6828
|
-
rel=""
|
|
6829
|
-
href="/docs/components/accordion"
|
|
6830
|
-
>
|
|
6831
|
-
Accordion
|
|
6832
|
-
</a>
|
|
6833
|
-
<a
|
|
6834
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6835
|
-
target=""
|
|
6836
|
-
rel=""
|
|
6837
|
-
href="/docs/components/alert"
|
|
6838
|
-
>
|
|
6839
|
-
Alert
|
|
6840
|
-
</a>
|
|
6841
|
-
<a
|
|
6842
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6843
|
-
routerLink="/alert-dialog"
|
|
6844
|
-
>
|
|
6845
|
-
Alert Dialog
|
|
6846
|
-
</a>
|
|
6847
|
-
<a
|
|
6848
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6849
|
-
target=""
|
|
6850
|
-
rel=""
|
|
6851
|
-
href="/docs/components/aspect-ratio"
|
|
6852
|
-
>
|
|
6853
|
-
Aspect Ratio
|
|
6854
|
-
</a>
|
|
6855
|
-
<a
|
|
6856
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6857
|
-
target=""
|
|
6858
|
-
rel=""
|
|
6859
|
-
href="/docs/components/avatar"
|
|
6860
|
-
>
|
|
6861
|
-
Avatar
|
|
6862
|
-
</a>
|
|
6863
|
-
<a
|
|
6864
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6865
|
-
target=""
|
|
6866
|
-
rel=""
|
|
6867
|
-
href="/docs/components/badge"
|
|
6868
|
-
>
|
|
6869
|
-
Badge
|
|
6870
|
-
</a>
|
|
6871
|
-
<a
|
|
6872
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6873
|
-
routerLink="/breadcrumb"
|
|
6874
|
-
>
|
|
6875
|
-
Breadcrumb
|
|
6876
|
-
</a>
|
|
6877
|
-
<a
|
|
6878
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6879
|
-
routerLink="/button"
|
|
6880
|
-
>
|
|
6881
|
-
Button
|
|
6882
|
-
</a>
|
|
6883
|
-
<a
|
|
6884
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6885
|
-
routerLink="/date-picker"
|
|
6886
|
-
>
|
|
6887
|
-
Calendar
|
|
6888
|
-
</a>
|
|
6889
|
-
<a
|
|
6890
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6891
|
-
target=""
|
|
6892
|
-
rel=""
|
|
6893
|
-
href="/docs/components/card"
|
|
6894
|
-
>
|
|
6895
|
-
Card
|
|
6896
|
-
</a>
|
|
6897
|
-
<a
|
|
6898
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6899
|
-
target=""
|
|
6900
|
-
rel=""
|
|
6901
|
-
href="/docs/components/carousel"
|
|
6902
|
-
>
|
|
6903
|
-
Carousel
|
|
6904
|
-
</a>
|
|
6905
|
-
<a
|
|
6906
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6907
|
-
target=""
|
|
6908
|
-
rel=""
|
|
6909
|
-
href="/docs/components/chart"
|
|
6910
|
-
>
|
|
6911
|
-
Chart
|
|
6912
|
-
</a>
|
|
6913
|
-
<a
|
|
6914
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6915
|
-
target=""
|
|
6916
|
-
rel=""
|
|
6917
|
-
href="/docs/components/checkbox"
|
|
6918
|
-
>
|
|
6919
|
-
Checkbox
|
|
6920
|
-
</a>
|
|
6921
|
-
<a
|
|
6922
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6923
|
-
target=""
|
|
6924
|
-
rel=""
|
|
6925
|
-
href="/docs/components/collapsible"
|
|
6926
|
-
>
|
|
6927
|
-
Collapsible
|
|
6928
|
-
</a>
|
|
6929
|
-
<a
|
|
6930
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6931
|
-
target=""
|
|
6932
|
-
rel=""
|
|
6933
|
-
href="/docs/components/combobox"
|
|
6934
|
-
>
|
|
6935
|
-
Combobox
|
|
6936
|
-
</a>
|
|
6937
|
-
<a
|
|
6938
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6939
|
-
target=""
|
|
6940
|
-
rel=""
|
|
6941
|
-
href="/docs/components/command"
|
|
6942
|
-
>
|
|
6943
|
-
Command
|
|
6944
|
-
</a>
|
|
6945
|
-
<a
|
|
6946
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6947
|
-
target=""
|
|
6948
|
-
rel=""
|
|
6949
|
-
href="/docs/components/context-menu"
|
|
6950
|
-
>
|
|
6951
|
-
Context Menu
|
|
6952
|
-
</a>
|
|
6953
|
-
<a
|
|
6954
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6955
|
-
target=""
|
|
6956
|
-
rel=""
|
|
6957
|
-
href="/docs/components/data-table"
|
|
6958
|
-
>
|
|
6959
|
-
Data Table
|
|
6960
|
-
</a>
|
|
6961
|
-
<a
|
|
6962
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6963
|
-
routerLink="/date-picker"
|
|
6964
|
-
>
|
|
6965
|
-
Date Picker
|
|
6966
|
-
</a>
|
|
6967
|
-
<a
|
|
6968
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6969
|
-
routerLink="/dialog"
|
|
6970
|
-
>
|
|
6971
|
-
Dialog
|
|
6972
|
-
</a>
|
|
6973
|
-
<a
|
|
6974
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6975
|
-
target=""
|
|
6976
|
-
rel=""
|
|
6977
|
-
href="/docs/components/drawer"
|
|
6978
|
-
>
|
|
6979
|
-
Drawer
|
|
6980
|
-
</a>
|
|
6981
|
-
<a
|
|
6982
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6983
|
-
target=""
|
|
6984
|
-
rel=""
|
|
6985
|
-
href="/docs/components/dropdown-menu"
|
|
6986
|
-
>
|
|
6987
|
-
Dropdown Menu
|
|
6988
|
-
</a>
|
|
6989
|
-
<a
|
|
6990
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6991
|
-
target=""
|
|
6992
|
-
rel=""
|
|
6993
|
-
href="/docs/components/form"
|
|
6994
|
-
>
|
|
6995
|
-
Form
|
|
6996
|
-
</a>
|
|
6997
|
-
<a
|
|
6998
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6999
|
-
target=""
|
|
7000
|
-
rel=""
|
|
7001
|
-
href="/docs/components/hover-card"
|
|
7002
|
-
>
|
|
7003
|
-
Hover Card
|
|
7004
|
-
</a>
|
|
7005
|
-
<a
|
|
7006
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7007
|
-
target=""
|
|
7008
|
-
rel=""
|
|
7009
|
-
href="/docs/components/input"
|
|
7010
|
-
>
|
|
7011
|
-
Input
|
|
7012
|
-
</a>
|
|
7013
|
-
<a
|
|
7014
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7015
|
-
target=""
|
|
7016
|
-
rel=""
|
|
7017
|
-
href="/docs/components/input-otp"
|
|
7018
|
-
>
|
|
7019
|
-
Input OTP
|
|
7020
|
-
</a>
|
|
7021
|
-
<a
|
|
7022
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7023
|
-
target=""
|
|
7024
|
-
rel=""
|
|
7025
|
-
href="/docs/components/label"
|
|
7026
|
-
>
|
|
7027
|
-
Label
|
|
7028
|
-
</a>
|
|
7029
|
-
<a
|
|
7030
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7031
|
-
target=""
|
|
7032
|
-
rel=""
|
|
7033
|
-
href="/docs/components/menubar"
|
|
7034
|
-
>
|
|
7035
|
-
Menubar
|
|
7036
|
-
</a>
|
|
7037
|
-
<a
|
|
7038
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7039
|
-
routerLink="/nav"
|
|
7040
|
-
>
|
|
7041
|
-
Navigation Menu
|
|
7042
|
-
</a>
|
|
7043
|
-
<a
|
|
7044
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7045
|
-
routerLink="/paginator"
|
|
7046
|
-
>
|
|
7047
|
-
Pagination
|
|
7048
|
-
</a>
|
|
7049
|
-
<a
|
|
7050
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7051
|
-
target=""
|
|
7052
|
-
rel=""
|
|
7053
|
-
href="/docs/components/popover"
|
|
7054
|
-
>
|
|
7055
|
-
Popover
|
|
7056
|
-
</a>
|
|
7057
|
-
<a
|
|
7058
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7059
|
-
routerLink="/progress"
|
|
7060
|
-
>
|
|
7061
|
-
Progress
|
|
7062
|
-
</a>
|
|
7063
|
-
<a
|
|
7064
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7065
|
-
target=""
|
|
7066
|
-
rel=""
|
|
7067
|
-
href="/docs/components/radio-group"
|
|
7068
|
-
>
|
|
7069
|
-
Radio Group
|
|
7070
|
-
</a>
|
|
7071
|
-
<a
|
|
7072
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7073
|
-
target=""
|
|
7074
|
-
rel=""
|
|
7075
|
-
href="/docs/components/resizable"
|
|
7076
|
-
>
|
|
7077
|
-
Resizable
|
|
7078
|
-
</a>
|
|
7079
|
-
<a
|
|
7080
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7081
|
-
target=""
|
|
7082
|
-
rel=""
|
|
7083
|
-
href="/docs/components/scroll-area"
|
|
7084
|
-
>
|
|
7085
|
-
Scroll Area
|
|
7086
|
-
</a>
|
|
7087
|
-
<a
|
|
7088
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7089
|
-
routerLink="/select"
|
|
7090
|
-
>
|
|
7091
|
-
Select
|
|
7092
|
-
</a>
|
|
7093
|
-
<a
|
|
7094
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7095
|
-
target=""
|
|
7096
|
-
rel=""
|
|
7097
|
-
href="/docs/components/separator"
|
|
7098
|
-
>
|
|
7099
|
-
Separator
|
|
7100
|
-
</a>
|
|
7101
|
-
<a
|
|
7102
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7103
|
-
target=""
|
|
7104
|
-
rel=""
|
|
7105
|
-
href="/docs/components/sheet"
|
|
7106
|
-
>
|
|
7107
|
-
Sheet
|
|
7108
|
-
</a>
|
|
7109
|
-
<a
|
|
7110
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7111
|
-
target=""
|
|
7112
|
-
rel=""
|
|
7113
|
-
href="/docs/components/skeleton"
|
|
7114
|
-
>
|
|
7115
|
-
Skeleton
|
|
7116
|
-
</a>
|
|
7117
|
-
<a
|
|
7118
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7119
|
-
target=""
|
|
7120
|
-
rel=""
|
|
7121
|
-
href="/docs/components/slider"
|
|
7122
|
-
>
|
|
7123
|
-
Slider
|
|
7124
|
-
</a>
|
|
7125
|
-
<a
|
|
7126
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7127
|
-
target=""
|
|
7128
|
-
rel=""
|
|
7129
|
-
href="/docs/components/sonner"
|
|
7130
|
-
>
|
|
7131
|
-
Sonner
|
|
7132
|
-
</a>
|
|
7133
|
-
<a
|
|
7134
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7135
|
-
target=""
|
|
7136
|
-
rel=""
|
|
7137
|
-
href="/docs/components/switch"
|
|
7138
|
-
>
|
|
7139
|
-
Switch
|
|
7140
|
-
</a>
|
|
7141
|
-
<a
|
|
7142
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7143
|
-
target=""
|
|
7144
|
-
rel=""
|
|
7145
|
-
href="/docs/components/table"
|
|
7146
|
-
>
|
|
7147
|
-
Table
|
|
7148
|
-
</a>
|
|
7149
|
-
<a
|
|
7150
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7151
|
-
routerLink="/editor"
|
|
7152
|
-
>
|
|
7153
|
-
Tabs
|
|
7154
|
-
</a>
|
|
7155
|
-
<a
|
|
7156
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7157
|
-
target=""
|
|
7158
|
-
rel=""
|
|
7159
|
-
href="/docs/components/textarea"
|
|
7160
|
-
>
|
|
7161
|
-
Textarea
|
|
7162
|
-
</a>
|
|
7163
|
-
<a
|
|
7164
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7165
|
-
target=""
|
|
7166
|
-
rel=""
|
|
7167
|
-
href="/docs/components/toast"
|
|
7168
|
-
>
|
|
7169
|
-
Toast
|
|
7170
|
-
</a>
|
|
7171
|
-
<a
|
|
7172
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7173
|
-
routerLink="/nav"
|
|
7174
|
-
>
|
|
7175
|
-
Toggle
|
|
7176
|
-
</a>
|
|
7177
|
-
<a
|
|
7178
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7179
|
-
target=""
|
|
7180
|
-
rel=""
|
|
7181
|
-
href="/docs/components/toggle-group"
|
|
7182
|
-
>
|
|
7183
|
-
Toggle Group
|
|
7184
|
-
</a>
|
|
7185
|
-
<a
|
|
7186
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7187
|
-
routerLink="/tooltip"
|
|
7188
|
-
>
|
|
7189
|
-
Tooltip
|
|
7190
|
-
</a>
|
|
7191
|
-
</div>
|
|
7192
|
-
</div>
|
|
7193
|
-
</div>
|
|
7194
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ScScrollArea, selector: "div[sc-scroll-area]", inputs: ["class", "visibility"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7195
|
-
}
|
|
7196
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SidebarContent, decorators: [{
|
|
7197
|
-
type: Component,
|
|
7198
|
-
args: [{ selector: 'app-sidebar-content', imports: [RouterModule, ScScrollArea], template: `
|
|
7199
|
-
<div class="w-full pl-5 pt-5" sc-scroll-area>
|
|
7200
|
-
<div class="pb-4">
|
|
7201
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Getting Started</h4>
|
|
7202
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
7203
|
-
<a
|
|
7204
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7205
|
-
target=""
|
|
7206
|
-
rel=""
|
|
7207
|
-
href="/docs"
|
|
7208
|
-
>
|
|
7209
|
-
Introduction
|
|
7210
|
-
</a>
|
|
7211
|
-
<a
|
|
7212
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7213
|
-
target=""
|
|
7214
|
-
rel=""
|
|
7215
|
-
href="/docs/installation"
|
|
7216
|
-
>
|
|
7217
|
-
Installation
|
|
7218
|
-
</a>
|
|
7219
|
-
<a
|
|
7220
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7221
|
-
target=""
|
|
7222
|
-
rel=""
|
|
7223
|
-
href="/docs/components-json"
|
|
7224
|
-
>
|
|
7225
|
-
components.json
|
|
7226
|
-
</a>
|
|
7227
|
-
<a
|
|
7228
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7229
|
-
target=""
|
|
7230
|
-
rel=""
|
|
7231
|
-
href="/docs/theming"
|
|
7232
|
-
>
|
|
7233
|
-
Theming
|
|
7234
|
-
</a>
|
|
7235
|
-
<a
|
|
7236
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7237
|
-
target=""
|
|
7238
|
-
rel=""
|
|
7239
|
-
href="/docs/dark-mode"
|
|
7240
|
-
>
|
|
7241
|
-
Dark mode
|
|
7242
|
-
</a>
|
|
7243
|
-
<a
|
|
7244
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7245
|
-
target=""
|
|
7246
|
-
rel=""
|
|
7247
|
-
href="/docs/cli"
|
|
7248
|
-
>
|
|
7249
|
-
CLI
|
|
7250
|
-
</a>
|
|
7251
|
-
<a
|
|
7252
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7253
|
-
target=""
|
|
7254
|
-
rel=""
|
|
7255
|
-
href="/docs/react-19"
|
|
7256
|
-
>
|
|
7257
|
-
Next.js 15 + React 19
|
|
7258
|
-
</a>
|
|
7259
|
-
<a
|
|
7260
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7261
|
-
target=""
|
|
7262
|
-
rel=""
|
|
7263
|
-
href="/docs/components/typography"
|
|
7264
|
-
>
|
|
7265
|
-
Typography
|
|
7266
|
-
</a>
|
|
7267
|
-
<a
|
|
7268
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7269
|
-
target=""
|
|
7270
|
-
rel=""
|
|
7271
|
-
href="/docs/v0"
|
|
7272
|
-
>
|
|
7273
|
-
Open in v0
|
|
7274
|
-
</a>
|
|
7275
|
-
<a
|
|
7276
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7277
|
-
target=""
|
|
7278
|
-
rel=""
|
|
7279
|
-
href="/docs/figma"
|
|
7280
|
-
>
|
|
7281
|
-
Figma
|
|
7282
|
-
</a>
|
|
7283
|
-
<a
|
|
7284
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7285
|
-
target=""
|
|
7286
|
-
rel=""
|
|
7287
|
-
href="/docs/changelog"
|
|
7288
|
-
>
|
|
7289
|
-
Changelog
|
|
7290
|
-
</a>
|
|
7291
|
-
</div>
|
|
7292
|
-
</div>
|
|
7293
|
-
<div class="pb-4">
|
|
7294
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Installation</h4>
|
|
7295
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
7296
|
-
<a
|
|
7297
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7298
|
-
target=""
|
|
7299
|
-
rel=""
|
|
7300
|
-
href="/docs/installation/next"
|
|
7301
|
-
>
|
|
7302
|
-
Next.js
|
|
7303
|
-
</a>
|
|
7304
|
-
<a
|
|
7305
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7306
|
-
target=""
|
|
7307
|
-
rel=""
|
|
7308
|
-
href="/docs/installation/vite"
|
|
7309
|
-
>
|
|
7310
|
-
Vite
|
|
7311
|
-
</a>
|
|
7312
|
-
<a
|
|
7313
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7314
|
-
target=""
|
|
7315
|
-
rel=""
|
|
7316
|
-
href="/docs/installation/remix"
|
|
7317
|
-
>
|
|
7318
|
-
Remix
|
|
7319
|
-
</a>
|
|
7320
|
-
<a
|
|
7321
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7322
|
-
target=""
|
|
7323
|
-
rel=""
|
|
7324
|
-
href="/docs/installation/astro"
|
|
7325
|
-
>
|
|
7326
|
-
Astro
|
|
7327
|
-
</a>
|
|
7328
|
-
<a
|
|
7329
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7330
|
-
target=""
|
|
7331
|
-
rel=""
|
|
7332
|
-
href="/docs/installation/laravel"
|
|
7333
|
-
>
|
|
7334
|
-
Laravel
|
|
7335
|
-
</a>
|
|
7336
|
-
<a
|
|
7337
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7338
|
-
target=""
|
|
7339
|
-
rel=""
|
|
7340
|
-
href="/docs/installation/gatsby"
|
|
7341
|
-
>
|
|
7342
|
-
Gatsby
|
|
7343
|
-
</a>
|
|
7344
|
-
<a
|
|
7345
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7346
|
-
target=""
|
|
7347
|
-
rel=""
|
|
7348
|
-
href="/docs/installation/manual"
|
|
7349
|
-
>
|
|
7350
|
-
Manual
|
|
7351
|
-
</a>
|
|
7352
|
-
</div>
|
|
7353
|
-
</div>
|
|
7354
|
-
<div class="pb-4">
|
|
7355
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Components</h4>
|
|
7356
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
7357
|
-
<a
|
|
7358
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
7359
|
-
routerLink="/editor"
|
|
7360
|
-
>
|
|
7361
|
-
Editor
|
|
7362
|
-
</a>
|
|
7363
|
-
<a
|
|
7364
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
7365
|
-
routerLink="/theme-toggler"
|
|
7366
|
-
>
|
|
7367
|
-
Theme toggler
|
|
7368
|
-
</a>
|
|
7369
|
-
<a
|
|
7370
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
7371
|
-
routerLink="/dropdown"
|
|
7372
|
-
>
|
|
7373
|
-
Dropdown
|
|
7374
|
-
</a>
|
|
7375
|
-
<a
|
|
7376
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7377
|
-
target=""
|
|
7378
|
-
rel=""
|
|
7379
|
-
href="/docs/components/sidebar"
|
|
7380
|
-
>
|
|
7381
|
-
Sidebar
|
|
7382
|
-
<span
|
|
7383
|
-
class="ml-2 rounded-md bg-[#adfa1d] px-1.5 py-0.5 text-xs leading-none text-[#000000] no-underline group-hover:no-underline"
|
|
7384
|
-
>
|
|
7385
|
-
New
|
|
7386
|
-
</span>
|
|
7387
|
-
</a>
|
|
7388
|
-
|
|
7389
|
-
<a
|
|
7390
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
7391
|
-
target=""
|
|
7392
|
-
rel=""
|
|
7393
|
-
href="/docs/components/accordion"
|
|
7394
|
-
>
|
|
7395
|
-
Accordion
|
|
7396
|
-
</a>
|
|
7397
|
-
<a
|
|
7398
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7399
|
-
target=""
|
|
7400
|
-
rel=""
|
|
7401
|
-
href="/docs/components/alert"
|
|
7402
|
-
>
|
|
7403
|
-
Alert
|
|
7404
|
-
</a>
|
|
7405
|
-
<a
|
|
7406
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7407
|
-
routerLink="/alert-dialog"
|
|
7408
|
-
>
|
|
7409
|
-
Alert Dialog
|
|
7410
|
-
</a>
|
|
7411
|
-
<a
|
|
7412
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7413
|
-
target=""
|
|
7414
|
-
rel=""
|
|
7415
|
-
href="/docs/components/aspect-ratio"
|
|
7416
|
-
>
|
|
7417
|
-
Aspect Ratio
|
|
7418
|
-
</a>
|
|
7419
|
-
<a
|
|
7420
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7421
|
-
target=""
|
|
7422
|
-
rel=""
|
|
7423
|
-
href="/docs/components/avatar"
|
|
7424
|
-
>
|
|
7425
|
-
Avatar
|
|
7426
|
-
</a>
|
|
7427
|
-
<a
|
|
7428
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7429
|
-
target=""
|
|
7430
|
-
rel=""
|
|
7431
|
-
href="/docs/components/badge"
|
|
7432
|
-
>
|
|
7433
|
-
Badge
|
|
7434
|
-
</a>
|
|
7435
|
-
<a
|
|
7436
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7437
|
-
routerLink="/breadcrumb"
|
|
7438
|
-
>
|
|
7439
|
-
Breadcrumb
|
|
7440
|
-
</a>
|
|
7441
|
-
<a
|
|
7442
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7443
|
-
routerLink="/button"
|
|
7444
|
-
>
|
|
7445
|
-
Button
|
|
7446
|
-
</a>
|
|
7447
|
-
<a
|
|
7448
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7449
|
-
routerLink="/date-picker"
|
|
7450
|
-
>
|
|
7451
|
-
Calendar
|
|
7452
|
-
</a>
|
|
7453
|
-
<a
|
|
7454
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7455
|
-
target=""
|
|
7456
|
-
rel=""
|
|
7457
|
-
href="/docs/components/card"
|
|
7458
|
-
>
|
|
7459
|
-
Card
|
|
7460
|
-
</a>
|
|
7461
|
-
<a
|
|
7462
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7463
|
-
target=""
|
|
7464
|
-
rel=""
|
|
7465
|
-
href="/docs/components/carousel"
|
|
7466
|
-
>
|
|
7467
|
-
Carousel
|
|
7468
|
-
</a>
|
|
7469
|
-
<a
|
|
7470
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7471
|
-
target=""
|
|
7472
|
-
rel=""
|
|
7473
|
-
href="/docs/components/chart"
|
|
7474
|
-
>
|
|
7475
|
-
Chart
|
|
7476
|
-
</a>
|
|
7477
|
-
<a
|
|
7478
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7479
|
-
target=""
|
|
7480
|
-
rel=""
|
|
7481
|
-
href="/docs/components/checkbox"
|
|
7482
|
-
>
|
|
7483
|
-
Checkbox
|
|
7484
|
-
</a>
|
|
7485
|
-
<a
|
|
7486
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7487
|
-
target=""
|
|
7488
|
-
rel=""
|
|
7489
|
-
href="/docs/components/collapsible"
|
|
7490
|
-
>
|
|
7491
|
-
Collapsible
|
|
7492
|
-
</a>
|
|
7493
|
-
<a
|
|
7494
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7495
|
-
target=""
|
|
7496
|
-
rel=""
|
|
7497
|
-
href="/docs/components/combobox"
|
|
7498
|
-
>
|
|
7499
|
-
Combobox
|
|
7500
|
-
</a>
|
|
7501
|
-
<a
|
|
7502
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7503
|
-
target=""
|
|
7504
|
-
rel=""
|
|
7505
|
-
href="/docs/components/command"
|
|
7506
|
-
>
|
|
7507
|
-
Command
|
|
7508
|
-
</a>
|
|
7509
|
-
<a
|
|
7510
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7511
|
-
target=""
|
|
7512
|
-
rel=""
|
|
7513
|
-
href="/docs/components/context-menu"
|
|
7514
|
-
>
|
|
7515
|
-
Context Menu
|
|
7516
|
-
</a>
|
|
7517
|
-
<a
|
|
7518
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7519
|
-
target=""
|
|
7520
|
-
rel=""
|
|
7521
|
-
href="/docs/components/data-table"
|
|
7522
|
-
>
|
|
7523
|
-
Data Table
|
|
7524
|
-
</a>
|
|
7525
|
-
<a
|
|
7526
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7527
|
-
routerLink="/date-picker"
|
|
7528
|
-
>
|
|
7529
|
-
Date Picker
|
|
7530
|
-
</a>
|
|
7531
|
-
<a
|
|
7532
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7533
|
-
routerLink="/dialog"
|
|
7534
|
-
>
|
|
7535
|
-
Dialog
|
|
7536
|
-
</a>
|
|
7537
|
-
<a
|
|
7538
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7539
|
-
target=""
|
|
7540
|
-
rel=""
|
|
7541
|
-
href="/docs/components/drawer"
|
|
7542
|
-
>
|
|
7543
|
-
Drawer
|
|
7544
|
-
</a>
|
|
7545
|
-
<a
|
|
7546
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7547
|
-
target=""
|
|
7548
|
-
rel=""
|
|
7549
|
-
href="/docs/components/dropdown-menu"
|
|
7550
|
-
>
|
|
7551
|
-
Dropdown Menu
|
|
7552
|
-
</a>
|
|
7553
|
-
<a
|
|
7554
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7555
|
-
target=""
|
|
7556
|
-
rel=""
|
|
7557
|
-
href="/docs/components/form"
|
|
7558
|
-
>
|
|
7559
|
-
Form
|
|
7560
|
-
</a>
|
|
7561
|
-
<a
|
|
7562
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7563
|
-
target=""
|
|
7564
|
-
rel=""
|
|
7565
|
-
href="/docs/components/hover-card"
|
|
7566
|
-
>
|
|
7567
|
-
Hover Card
|
|
7568
|
-
</a>
|
|
7569
|
-
<a
|
|
7570
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7571
|
-
target=""
|
|
7572
|
-
rel=""
|
|
7573
|
-
href="/docs/components/input"
|
|
7574
|
-
>
|
|
7575
|
-
Input
|
|
7576
|
-
</a>
|
|
7577
|
-
<a
|
|
7578
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7579
|
-
target=""
|
|
7580
|
-
rel=""
|
|
7581
|
-
href="/docs/components/input-otp"
|
|
7582
|
-
>
|
|
7583
|
-
Input OTP
|
|
7584
|
-
</a>
|
|
7585
|
-
<a
|
|
7586
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7587
|
-
target=""
|
|
7588
|
-
rel=""
|
|
7589
|
-
href="/docs/components/label"
|
|
7590
|
-
>
|
|
7591
|
-
Label
|
|
7592
|
-
</a>
|
|
7593
|
-
<a
|
|
7594
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7595
|
-
target=""
|
|
7596
|
-
rel=""
|
|
7597
|
-
href="/docs/components/menubar"
|
|
7598
|
-
>
|
|
7599
|
-
Menubar
|
|
7600
|
-
</a>
|
|
7601
|
-
<a
|
|
7602
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7603
|
-
routerLink="/nav"
|
|
7604
|
-
>
|
|
7605
|
-
Navigation Menu
|
|
7606
|
-
</a>
|
|
7607
|
-
<a
|
|
7608
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7609
|
-
routerLink="/paginator"
|
|
7610
|
-
>
|
|
7611
|
-
Pagination
|
|
7612
|
-
</a>
|
|
7613
|
-
<a
|
|
7614
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7615
|
-
target=""
|
|
7616
|
-
rel=""
|
|
7617
|
-
href="/docs/components/popover"
|
|
7618
|
-
>
|
|
7619
|
-
Popover
|
|
7620
|
-
</a>
|
|
7621
|
-
<a
|
|
7622
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7623
|
-
routerLink="/progress"
|
|
7624
|
-
>
|
|
7625
|
-
Progress
|
|
7626
|
-
</a>
|
|
7627
|
-
<a
|
|
7628
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7629
|
-
target=""
|
|
7630
|
-
rel=""
|
|
7631
|
-
href="/docs/components/radio-group"
|
|
7632
|
-
>
|
|
7633
|
-
Radio Group
|
|
7634
|
-
</a>
|
|
7635
|
-
<a
|
|
7636
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7637
|
-
target=""
|
|
7638
|
-
rel=""
|
|
7639
|
-
href="/docs/components/resizable"
|
|
7640
|
-
>
|
|
7641
|
-
Resizable
|
|
7642
|
-
</a>
|
|
7643
|
-
<a
|
|
7644
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7645
|
-
target=""
|
|
7646
|
-
rel=""
|
|
7647
|
-
href="/docs/components/scroll-area"
|
|
7648
|
-
>
|
|
7649
|
-
Scroll Area
|
|
7650
|
-
</a>
|
|
7651
|
-
<a
|
|
7652
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7653
|
-
routerLink="/select"
|
|
7654
|
-
>
|
|
7655
|
-
Select
|
|
7656
|
-
</a>
|
|
7657
|
-
<a
|
|
7658
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7659
|
-
target=""
|
|
7660
|
-
rel=""
|
|
7661
|
-
href="/docs/components/separator"
|
|
7662
|
-
>
|
|
7663
|
-
Separator
|
|
7664
|
-
</a>
|
|
7665
|
-
<a
|
|
7666
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7667
|
-
target=""
|
|
7668
|
-
rel=""
|
|
7669
|
-
href="/docs/components/sheet"
|
|
7670
|
-
>
|
|
7671
|
-
Sheet
|
|
7672
|
-
</a>
|
|
7673
|
-
<a
|
|
7674
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7675
|
-
target=""
|
|
7676
|
-
rel=""
|
|
7677
|
-
href="/docs/components/skeleton"
|
|
7678
|
-
>
|
|
7679
|
-
Skeleton
|
|
7680
|
-
</a>
|
|
7681
|
-
<a
|
|
7682
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7683
|
-
target=""
|
|
7684
|
-
rel=""
|
|
7685
|
-
href="/docs/components/slider"
|
|
7686
|
-
>
|
|
7687
|
-
Slider
|
|
7688
|
-
</a>
|
|
7689
|
-
<a
|
|
7690
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7691
|
-
target=""
|
|
7692
|
-
rel=""
|
|
7693
|
-
href="/docs/components/sonner"
|
|
7694
|
-
>
|
|
7695
|
-
Sonner
|
|
7696
|
-
</a>
|
|
7697
|
-
<a
|
|
7698
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7699
|
-
target=""
|
|
7700
|
-
rel=""
|
|
7701
|
-
href="/docs/components/switch"
|
|
7702
|
-
>
|
|
7703
|
-
Switch
|
|
7704
|
-
</a>
|
|
7705
|
-
<a
|
|
7706
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7707
|
-
target=""
|
|
7708
|
-
rel=""
|
|
7709
|
-
href="/docs/components/table"
|
|
7710
|
-
>
|
|
7711
|
-
Table
|
|
7712
|
-
</a>
|
|
7713
|
-
<a
|
|
7714
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7715
|
-
routerLink="/editor"
|
|
7716
|
-
>
|
|
7717
|
-
Tabs
|
|
7718
|
-
</a>
|
|
7719
|
-
<a
|
|
7720
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7721
|
-
target=""
|
|
7722
|
-
rel=""
|
|
7723
|
-
href="/docs/components/textarea"
|
|
7724
|
-
>
|
|
7725
|
-
Textarea
|
|
7726
|
-
</a>
|
|
7727
|
-
<a
|
|
7728
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7729
|
-
target=""
|
|
7730
|
-
rel=""
|
|
7731
|
-
href="/docs/components/toast"
|
|
7732
|
-
>
|
|
7733
|
-
Toast
|
|
7734
|
-
</a>
|
|
7735
|
-
<a
|
|
7736
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7737
|
-
routerLink="/nav"
|
|
7738
|
-
>
|
|
7739
|
-
Toggle
|
|
7740
|
-
</a>
|
|
7741
|
-
<a
|
|
7742
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7743
|
-
target=""
|
|
7744
|
-
rel=""
|
|
7745
|
-
href="/docs/components/toggle-group"
|
|
7746
|
-
>
|
|
7747
|
-
Toggle Group
|
|
7748
|
-
</a>
|
|
7749
|
-
<a
|
|
7750
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7751
|
-
routerLink="/tooltip"
|
|
7752
|
-
>
|
|
7753
|
-
Tooltip
|
|
7754
|
-
</a>
|
|
7755
|
-
</div>
|
|
7756
|
-
</div>
|
|
7757
|
-
</div>
|
|
7758
|
-
`, host: {
|
|
7759
|
-
'[class]': 'classes()',
|
|
7760
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
7761
|
-
}] });
|
|
6579
|
+
}
|
|
6580
|
+
open(templateRef, config) {
|
|
6581
|
+
this.state.set('open');
|
|
6582
|
+
this.side.set(config.side);
|
|
6583
|
+
const overlayConfig = this.getOverlayConfig(config);
|
|
6584
|
+
this._overlayRef = this._overlay.create(overlayConfig);
|
|
6585
|
+
const scSheetPortal = new ComponentPortal(ScSheetContainer);
|
|
6586
|
+
const scSheetRef = this._overlayRef.attach(scSheetPortal);
|
|
6587
|
+
scSheetRef.instance.templateRef.set(templateRef);
|
|
6588
|
+
this._overlayRef.backdropClick().subscribe(() => this.close());
|
|
6589
|
+
}
|
|
6590
|
+
close() {
|
|
6591
|
+
if (this._overlayRef?.hasAttached()) {
|
|
6592
|
+
this._overlayRef?.detach();
|
|
6593
|
+
this.state.set('closed');
|
|
6594
|
+
}
|
|
6595
|
+
}
|
|
6596
|
+
getOverlayConfig(config) {
|
|
6597
|
+
switch (config.side) {
|
|
6598
|
+
case 'top': {
|
|
6599
|
+
return new OverlayConfig({
|
|
6600
|
+
positionStrategy: this._overlay.position().global().top(),
|
|
6601
|
+
width: config.width,
|
|
6602
|
+
height: config.height,
|
|
6603
|
+
hasBackdrop: true,
|
|
6604
|
+
});
|
|
6605
|
+
}
|
|
6606
|
+
case 'bottom': {
|
|
6607
|
+
return new OverlayConfig({
|
|
6608
|
+
positionStrategy: this._overlay.position().global().bottom(),
|
|
6609
|
+
width: config.width,
|
|
6610
|
+
height: config.height,
|
|
6611
|
+
hasBackdrop: true,
|
|
6612
|
+
});
|
|
6613
|
+
}
|
|
6614
|
+
case 'left': {
|
|
6615
|
+
return new OverlayConfig({
|
|
6616
|
+
positionStrategy: this._overlay.position().global().left(),
|
|
6617
|
+
width: config.width,
|
|
6618
|
+
height: config.height,
|
|
6619
|
+
hasBackdrop: true,
|
|
6620
|
+
});
|
|
6621
|
+
}
|
|
6622
|
+
case 'right': {
|
|
6623
|
+
return new OverlayConfig({
|
|
6624
|
+
positionStrategy: this._overlay.position().global().right(),
|
|
6625
|
+
width: config.width,
|
|
6626
|
+
height: config.height,
|
|
6627
|
+
hasBackdrop: true,
|
|
6628
|
+
});
|
|
6629
|
+
}
|
|
6630
|
+
default: {
|
|
6631
|
+
throw new Error('Error in switch case');
|
|
6632
|
+
}
|
|
6633
|
+
}
|
|
6634
|
+
}
|
|
6635
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6636
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, providedIn: 'root' });
|
|
6637
|
+
}
|
|
6638
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, decorators: [{
|
|
6639
|
+
type: Injectable,
|
|
6640
|
+
args: [{
|
|
6641
|
+
providedIn: 'root',
|
|
6642
|
+
}]
|
|
6643
|
+
}], ctorParameters: () => [] });
|
|
7762
6644
|
|
|
7763
6645
|
const sheetVariants = cva('relative z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out', {
|
|
7764
6646
|
variants: {
|
|
7765
6647
|
side: {
|
|
7766
6648
|
top: 'size-full border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',
|
|
7767
6649
|
bottom: 'size-full border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',
|
|
7768
|
-
left: 'size-full border-r
|
|
7769
|
-
right: 'size-full border-l
|
|
6650
|
+
left: 'size-full border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',
|
|
6651
|
+
right: 'size-full border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',
|
|
7770
6652
|
},
|
|
7771
6653
|
},
|
|
7772
6654
|
defaultVariants: {
|
|
@@ -7774,32 +6656,58 @@ const sheetVariants = cva('relative z-50 gap-4 bg-background p-6 shadow-lg trans
|
|
|
7774
6656
|
},
|
|
7775
6657
|
});
|
|
7776
6658
|
class ScSheet {
|
|
7777
|
-
|
|
6659
|
+
scSheetTrigger = inject(ScSheetTrigger);
|
|
7778
6660
|
state = computed(() => {
|
|
7779
|
-
return this.
|
|
6661
|
+
return this.scSheetTrigger.state();
|
|
6662
|
+
});
|
|
6663
|
+
side = computed(() => {
|
|
6664
|
+
return this.scSheetTrigger.side();
|
|
7780
6665
|
});
|
|
7781
|
-
side = signal('right');
|
|
7782
6666
|
class = input('');
|
|
7783
6667
|
classes = computed(() => cn(sheetVariants({ side: this.side() }), this.class()));
|
|
7784
6668
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheet, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7785
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScSheet, isStandalone: true, selector: "sc-sheet", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-state": "state()" } }, ngImport: i0, template: `
|
|
7786
|
-
<
|
|
7787
|
-
|
|
7788
|
-
<app-sidebar-content />
|
|
7789
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScSheetToggler, selector: "sc-sheet-toggler", inputs: ["class"] }, { kind: "component", type: SidebarContent, selector: "app-sidebar-content", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6669
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScSheet, isStandalone: true, selector: "div[sc-sheet]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-state": "state()" } }, ngImport: i0, template: `
|
|
6670
|
+
<ng-content />
|
|
6671
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7790
6672
|
}
|
|
7791
6673
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheet, decorators: [{
|
|
7792
6674
|
type: Component,
|
|
7793
|
-
args: [{ selector: 'sc-sheet', imports: [
|
|
7794
|
-
<
|
|
7795
|
-
|
|
7796
|
-
<app-sidebar-content />
|
|
6675
|
+
args: [{ selector: 'div[sc-sheet]', imports: [], template: `
|
|
6676
|
+
<ng-content />
|
|
7797
6677
|
`, host: {
|
|
7798
6678
|
'[class]': 'classes()',
|
|
7799
6679
|
'[attr.data-state]': 'state()',
|
|
7800
6680
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
7801
6681
|
}] });
|
|
7802
6682
|
|
|
6683
|
+
class ScSheetConfig {
|
|
6684
|
+
side = 'right';
|
|
6685
|
+
width = '100%';
|
|
6686
|
+
height = '100%';
|
|
6687
|
+
}
|
|
6688
|
+
|
|
6689
|
+
class ScSheetClose {
|
|
6690
|
+
scSheetTrigger = inject(ScSheetTrigger);
|
|
6691
|
+
class = input('');
|
|
6692
|
+
classes = computed(() => cn('absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground', this.class()));
|
|
6693
|
+
close() {
|
|
6694
|
+
this.scSheetTrigger.close();
|
|
6695
|
+
}
|
|
6696
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetClose, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6697
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScSheetClose, isStandalone: true, selector: "button[sc-sheet-close]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "close()" }, properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6698
|
+
<ng-content />
|
|
6699
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6700
|
+
}
|
|
6701
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetClose, decorators: [{
|
|
6702
|
+
type: Component,
|
|
6703
|
+
args: [{ selector: 'button[sc-sheet-close]', imports: [], template: `
|
|
6704
|
+
<ng-content />
|
|
6705
|
+
`, host: {
|
|
6706
|
+
'[class]': 'classes()',
|
|
6707
|
+
'(click)': 'close()',
|
|
6708
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6709
|
+
}] });
|
|
6710
|
+
|
|
7803
6711
|
class ScBreadcrumb {
|
|
7804
6712
|
ariaLabel = 'breadcrumb';
|
|
7805
6713
|
class = input('');
|
|
@@ -8321,6 +7229,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
8321
7229
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
8322
7230
|
}] });
|
|
8323
7231
|
|
|
7232
|
+
class ScScrollArea {
|
|
7233
|
+
host = inject(ElementRef);
|
|
7234
|
+
class = input('');
|
|
7235
|
+
classes = computed(() => cn('', this.class()));
|
|
7236
|
+
visibility = input('native');
|
|
7237
|
+
//TODO remove use of ngAfterViewInit
|
|
7238
|
+
ngAfterViewInit() {
|
|
7239
|
+
const height = this.host.nativeElement.scrollHeight;
|
|
7240
|
+
console.log(height);
|
|
7241
|
+
}
|
|
7242
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScScrollArea, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7243
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScScrollArea, isStandalone: true, selector: "div[sc-scroll-area]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, visibility: { classPropertyName: "visibility", publicName: "visibility", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
7244
|
+
<ng-scrollbar
|
|
7245
|
+
[visibility]="visibility()"
|
|
7246
|
+
[style]="{
|
|
7247
|
+
'--scrollbar-border-radius': '100px',
|
|
7248
|
+
'--scrollbar-padding': '1px',
|
|
7249
|
+
'--scrollbar-thumb-color': 'hsl(var(--border))',
|
|
7250
|
+
'--scrollbar-thumb-hover-color': 'hsl(var(--border))',
|
|
7251
|
+
'--scrollbar-size': '7px',
|
|
7252
|
+
}"
|
|
7253
|
+
>
|
|
7254
|
+
<ng-content />
|
|
7255
|
+
</ng-scrollbar>
|
|
7256
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: NgScrollbarModule }, { kind: "component", type: i1$2.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7257
|
+
}
|
|
7258
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScScrollArea, decorators: [{
|
|
7259
|
+
type: Component,
|
|
7260
|
+
args: [{ selector: 'div[sc-scroll-area]', imports: [NgScrollbarModule], template: `
|
|
7261
|
+
<ng-scrollbar
|
|
7262
|
+
[visibility]="visibility()"
|
|
7263
|
+
[style]="{
|
|
7264
|
+
'--scrollbar-border-radius': '100px',
|
|
7265
|
+
'--scrollbar-padding': '1px',
|
|
7266
|
+
'--scrollbar-thumb-color': 'hsl(var(--border))',
|
|
7267
|
+
'--scrollbar-thumb-hover-color': 'hsl(var(--border))',
|
|
7268
|
+
'--scrollbar-size': '7px',
|
|
7269
|
+
}"
|
|
7270
|
+
>
|
|
7271
|
+
<ng-content />
|
|
7272
|
+
</ng-scrollbar>
|
|
7273
|
+
`, host: {
|
|
7274
|
+
'[class]': 'classes()',
|
|
7275
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
7276
|
+
}] });
|
|
7277
|
+
|
|
8324
7278
|
class ScTab {
|
|
8325
7279
|
class = input('');
|
|
8326
7280
|
classes = computed(() => cn('', this.class()));
|
|
@@ -11100,9 +10054,425 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
11100
10054
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
11101
10055
|
}] });
|
|
11102
10056
|
|
|
10057
|
+
const SIDEBAR_WIDTH = '16rem';
|
|
10058
|
+
const SIDEBAR_WIDTH_MOBILE = '18rem';
|
|
10059
|
+
const SIDEBAR_WIDTH_ICON = '3rem';
|
|
10060
|
+
|
|
10061
|
+
class ScSidebarState {
|
|
10062
|
+
open = signal(true);
|
|
10063
|
+
openMobile = signal(false);
|
|
10064
|
+
isMobile = signal(false);
|
|
10065
|
+
// Helper to toggle the sidebar.
|
|
10066
|
+
toggleSidebar() {
|
|
10067
|
+
return this.isMobile()
|
|
10068
|
+
? this.openMobile.update((open) => !open)
|
|
10069
|
+
: this.open.update((open) => !open);
|
|
10070
|
+
}
|
|
10071
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10072
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarState, providedIn: 'root' });
|
|
10073
|
+
}
|
|
10074
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarState, decorators: [{
|
|
10075
|
+
type: Injectable,
|
|
10076
|
+
args: [{ providedIn: 'root' }]
|
|
10077
|
+
}] });
|
|
10078
|
+
|
|
10079
|
+
class ScSidebarToggler {
|
|
10080
|
+
sidebarState = inject(ScSidebarState);
|
|
10081
|
+
toggleSidebar() {
|
|
10082
|
+
this.sidebarState.toggleSidebar();
|
|
10083
|
+
}
|
|
10084
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarToggler, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10085
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: ScSidebarToggler, isStandalone: true, selector: "sc-sidebar-toggler", ngImport: i0, template: `
|
|
10086
|
+
<button
|
|
10087
|
+
class="size-7"
|
|
10088
|
+
(click)="toggleSidebar()"
|
|
10089
|
+
sc-button
|
|
10090
|
+
data-sidebar="trigger"
|
|
10091
|
+
variant="ghost"
|
|
10092
|
+
size="icon"
|
|
10093
|
+
>
|
|
10094
|
+
<ng-content />
|
|
10095
|
+
<span class="sr-only">Toggle Sidebar</span>
|
|
10096
|
+
</button>
|
|
10097
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10098
|
+
}
|
|
10099
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarToggler, decorators: [{
|
|
10100
|
+
type: Component,
|
|
10101
|
+
args: [{ selector: 'sc-sidebar-toggler', imports: [ScButton], template: `
|
|
10102
|
+
<button
|
|
10103
|
+
class="size-7"
|
|
10104
|
+
(click)="toggleSidebar()"
|
|
10105
|
+
sc-button
|
|
10106
|
+
data-sidebar="trigger"
|
|
10107
|
+
variant="ghost"
|
|
10108
|
+
size="icon"
|
|
10109
|
+
>
|
|
10110
|
+
<ng-content />
|
|
10111
|
+
<span class="sr-only">Toggle Sidebar</span>
|
|
10112
|
+
</button>
|
|
10113
|
+
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
10114
|
+
}] });
|
|
10115
|
+
|
|
10116
|
+
class ScSidebarMobile {
|
|
10117
|
+
sidebarState = inject(ScSidebarState);
|
|
10118
|
+
styles = signal(`--sidebar-width: ${SIDEBAR_WIDTH_MOBILE};`);
|
|
10119
|
+
side = input.required();
|
|
10120
|
+
openMobile = computed(() => this.sidebarState.openMobile());
|
|
10121
|
+
state = computed(() => {
|
|
10122
|
+
return this.openMobile() ? 'open' : 'closed';
|
|
10123
|
+
});
|
|
10124
|
+
class = input('');
|
|
10125
|
+
classes = computed(() => cn('absolute top-0 h-full bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out', this.openMobile() && 'w-[--sidebar-width]', !this.openMobile() && 'w-0 overflow-hidden', this.side() === 'left' &&
|
|
10126
|
+
'left-0 data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left', this.side() === 'right' &&
|
|
10127
|
+
'right-0 data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right', this.class()));
|
|
10128
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarMobile, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10129
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScSidebarMobile, isStandalone: true, selector: "sc-sidebar-mobile", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: true, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "style": "styles()", "attr.data-sidebar": "\"sidebar\"", "attr.data-mobile": "\"true\"", "attr.data-state": "state()" } }, ngImport: i0, template: `
|
|
10130
|
+
<div class="flex size-full flex-col">
|
|
10131
|
+
<sc-sidebar-toggler class="absolute right-1 top-1">
|
|
10132
|
+
<svg-x-icon />
|
|
10133
|
+
</sc-sidebar-toggler>
|
|
10134
|
+
|
|
10135
|
+
<br />
|
|
10136
|
+
<br />
|
|
10137
|
+
open : {{ sidebarState.open() }}
|
|
10138
|
+
<br />
|
|
10139
|
+
openMobile : {{ sidebarState.openMobile() }}
|
|
10140
|
+
<br />
|
|
10141
|
+
isMobile : {{ sidebarState.isMobile() }}
|
|
10142
|
+
|
|
10143
|
+
<ng-content />
|
|
10144
|
+
</div>
|
|
10145
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScSidebarToggler, selector: "sc-sidebar-toggler" }, { kind: "component", type: SvgXIcon, selector: "svg-x-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10146
|
+
}
|
|
10147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarMobile, decorators: [{
|
|
10148
|
+
type: Component,
|
|
10149
|
+
args: [{ selector: 'sc-sidebar-mobile', imports: [ScSidebarToggler, SvgXIcon], template: `
|
|
10150
|
+
<div class="flex size-full flex-col">
|
|
10151
|
+
<sc-sidebar-toggler class="absolute right-1 top-1">
|
|
10152
|
+
<svg-x-icon />
|
|
10153
|
+
</sc-sidebar-toggler>
|
|
10154
|
+
|
|
10155
|
+
<br />
|
|
10156
|
+
<br />
|
|
10157
|
+
open : {{ sidebarState.open() }}
|
|
10158
|
+
<br />
|
|
10159
|
+
openMobile : {{ sidebarState.openMobile() }}
|
|
10160
|
+
<br />
|
|
10161
|
+
isMobile : {{ sidebarState.isMobile() }}
|
|
10162
|
+
|
|
10163
|
+
<ng-content />
|
|
10164
|
+
</div>
|
|
10165
|
+
`, host: {
|
|
10166
|
+
'[class]': 'classes()',
|
|
10167
|
+
'[style]': 'styles()',
|
|
10168
|
+
'[attr.data-sidebar]': '"sidebar"',
|
|
10169
|
+
'[attr.data-mobile]': '"true"',
|
|
10170
|
+
'[attr.data-state]': 'state()',
|
|
10171
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
10172
|
+
}] });
|
|
10173
|
+
|
|
10174
|
+
class ScSidebar {
|
|
10175
|
+
observer;
|
|
10176
|
+
sidebarState = inject(ScSidebarState);
|
|
10177
|
+
class = input('');
|
|
10178
|
+
classes = computed(() => cn('block relative', this.class()));
|
|
10179
|
+
side = input('left');
|
|
10180
|
+
variant = input('sidebar');
|
|
10181
|
+
collapsible = input('offcanvas');
|
|
10182
|
+
isMobile = computed(() => this.sidebarState.isMobile());
|
|
10183
|
+
openMobile = computed(() => this.sidebarState.openMobile());
|
|
10184
|
+
// We add a state so that we can do data-state="expanded" or "collapsed".
|
|
10185
|
+
// This makes it easier to style the sidebar with Tailwind classes.
|
|
10186
|
+
state = computed(() => (this.sidebarState.open() ? 'expanded' : 'collapsed'));
|
|
10187
|
+
classes1 = signal(cn('duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear', 'group-data-[collapsible=offcanvas]:w-0', 'group-data-[side=right]:rotate-180', this.variant() === 'floating' || this.variant() === 'inset'
|
|
10188
|
+
? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'
|
|
10189
|
+
: 'group-data-[collapsible=icon]:w-[--sidebar-width-icon]'));
|
|
10190
|
+
classes2 = signal(cn('duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex', this.side() === 'left'
|
|
10191
|
+
? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'
|
|
10192
|
+
: 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',
|
|
10193
|
+
// Adjust the padding for floating and inset variants.
|
|
10194
|
+
this.variant() === 'floating' || this.variant() === 'inset'
|
|
10195
|
+
? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]'
|
|
10196
|
+
: 'group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l'));
|
|
10197
|
+
constructor(observer) {
|
|
10198
|
+
this.observer = observer;
|
|
10199
|
+
this.observer.observe('(max-width: 768px)').subscribe((result) => {
|
|
10200
|
+
this.sidebarState.isMobile.set(result.matches);
|
|
10201
|
+
if (!result.matches && this.openMobile()) {
|
|
10202
|
+
this.sidebarState.openMobile.set(false);
|
|
10203
|
+
}
|
|
10204
|
+
});
|
|
10205
|
+
}
|
|
10206
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebar, deps: [{ token: i1$6.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
10207
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScSidebar, isStandalone: true, selector: "sc-sidebar", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
10208
|
+
<ng-template #sc_sidebar_content>
|
|
10209
|
+
<ng-content />
|
|
10210
|
+
</ng-template>
|
|
10211
|
+
|
|
10212
|
+
@if (collapsible() === 'none') {
|
|
10213
|
+
<div class="flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground">
|
|
10214
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10215
|
+
</div>
|
|
10216
|
+
} @else if (isMobile()) {
|
|
10217
|
+
<sc-sidebar-mobile [side]="side()">
|
|
10218
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10219
|
+
</sc-sidebar-mobile>
|
|
10220
|
+
} @else {
|
|
10221
|
+
<div
|
|
10222
|
+
class="group peer hidden text-sidebar-foreground md:block"
|
|
10223
|
+
[attr.data-state]="state()"
|
|
10224
|
+
[attr.data-collapsible]="state() === 'collapsed' ? collapsible() : ''"
|
|
10225
|
+
[attr.data-variant]="variant()"
|
|
10226
|
+
[attr.data-side]="side()"
|
|
10227
|
+
>
|
|
10228
|
+
<!-- This is what handles the sidebar gap on desktop -->
|
|
10229
|
+
<div [class]="classes1()"></div>
|
|
10230
|
+
<div [class]="classes2()">
|
|
10231
|
+
<div
|
|
10232
|
+
class="flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow"
|
|
10233
|
+
data-sidebar="sidebar"
|
|
10234
|
+
>
|
|
10235
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10236
|
+
</div>
|
|
10237
|
+
</div>
|
|
10238
|
+
</div>
|
|
10239
|
+
}
|
|
10240
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: LayoutModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ScSidebarMobile, selector: "sc-sidebar-mobile", inputs: ["side", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10241
|
+
}
|
|
10242
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebar, decorators: [{
|
|
10243
|
+
type: Component,
|
|
10244
|
+
args: [{ selector: 'sc-sidebar', imports: [LayoutModule, NgTemplateOutlet, ScSidebarMobile], template: `
|
|
10245
|
+
<ng-template #sc_sidebar_content>
|
|
10246
|
+
<ng-content />
|
|
10247
|
+
</ng-template>
|
|
10248
|
+
|
|
10249
|
+
@if (collapsible() === 'none') {
|
|
10250
|
+
<div class="flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground">
|
|
10251
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10252
|
+
</div>
|
|
10253
|
+
} @else if (isMobile()) {
|
|
10254
|
+
<sc-sidebar-mobile [side]="side()">
|
|
10255
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10256
|
+
</sc-sidebar-mobile>
|
|
10257
|
+
} @else {
|
|
10258
|
+
<div
|
|
10259
|
+
class="group peer hidden text-sidebar-foreground md:block"
|
|
10260
|
+
[attr.data-state]="state()"
|
|
10261
|
+
[attr.data-collapsible]="state() === 'collapsed' ? collapsible() : ''"
|
|
10262
|
+
[attr.data-variant]="variant()"
|
|
10263
|
+
[attr.data-side]="side()"
|
|
10264
|
+
>
|
|
10265
|
+
<!-- This is what handles the sidebar gap on desktop -->
|
|
10266
|
+
<div [class]="classes1()"></div>
|
|
10267
|
+
<div [class]="classes2()">
|
|
10268
|
+
<div
|
|
10269
|
+
class="flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow"
|
|
10270
|
+
data-sidebar="sidebar"
|
|
10271
|
+
>
|
|
10272
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10273
|
+
</div>
|
|
10274
|
+
</div>
|
|
10275
|
+
</div>
|
|
10276
|
+
}
|
|
10277
|
+
`, host: {
|
|
10278
|
+
'[class]': 'classes()',
|
|
10279
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
10280
|
+
}], ctorParameters: () => [{ type: i1$6.BreakpointObserver }] });
|
|
10281
|
+
|
|
10282
|
+
class ScSidebarProvider {
|
|
10283
|
+
sidebarState = inject(ScSidebarState);
|
|
10284
|
+
class = input('');
|
|
10285
|
+
classes = computed(() => cn('group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar', this.sidebarState.openMobile() && scOverlayClasses(), this.class()));
|
|
10286
|
+
styles = signal(`--sidebar-width: ${SIDEBAR_WIDTH}; --sidebar-width-icon: ${SIDEBAR_WIDTH_ICON};`);
|
|
10287
|
+
stateMobile = computed(() => {
|
|
10288
|
+
return this.sidebarState.openMobile() ? 'open' : 'closed';
|
|
10289
|
+
});
|
|
10290
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarProvider, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10291
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScSidebarProvider, isStandalone: true, selector: "sc-sidebar-provider", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "style": "styles()", "attr.data-state": "stateMobile()" } }, providers: [], ngImport: i0, template: `
|
|
10292
|
+
<ng-content />
|
|
10293
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10294
|
+
}
|
|
10295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarProvider, decorators: [{
|
|
10296
|
+
type: Component,
|
|
10297
|
+
args: [{ selector: 'sc-sidebar-provider', imports: [], template: `
|
|
10298
|
+
<ng-content />
|
|
10299
|
+
`, host: {
|
|
10300
|
+
'[class]': 'classes()',
|
|
10301
|
+
'[style]': 'styles()',
|
|
10302
|
+
'[attr.data-state]': 'stateMobile()',
|
|
10303
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [] }]
|
|
10304
|
+
}] });
|
|
10305
|
+
|
|
10306
|
+
class ScAutocompleteItem {
|
|
10307
|
+
class = input('');
|
|
10308
|
+
classes = computed(() => cn('relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none hover:bg-accent hover:text-accent-foreground data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_.svg]:pointer-events-none [&_.svg]:size-4 [&_.svg]:shrink-0', this.class()));
|
|
10309
|
+
_disabled = input(false, {
|
|
10310
|
+
transform: booleanAttribute,
|
|
10311
|
+
});
|
|
10312
|
+
item = input.required();
|
|
10313
|
+
selectedItem = input(undefined);
|
|
10314
|
+
isSelected = computed(() => {
|
|
10315
|
+
return this.item().id === this.selectedItem()?.id;
|
|
10316
|
+
});
|
|
10317
|
+
_isActive = signal(false);
|
|
10318
|
+
disabled;
|
|
10319
|
+
getLabel() {
|
|
10320
|
+
return this.item.name;
|
|
10321
|
+
}
|
|
10322
|
+
setActiveStyles() {
|
|
10323
|
+
this._isActive.set(true);
|
|
10324
|
+
}
|
|
10325
|
+
setInactiveStyles() {
|
|
10326
|
+
this._isActive.set(false);
|
|
10327
|
+
}
|
|
10328
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScAutocompleteItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10329
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScAutocompleteItem, isStandalone: true, selector: "sc-autocomplete-item", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "_disabled", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, selectedItem: { classPropertyName: "selectedItem", publicName: "selectedItem", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-disabled": "_disabled()", "attr.data-selected": "_isActive()" } }, ngImport: i0, template: `
|
|
10330
|
+
<ng-content />
|
|
10331
|
+
|
|
10332
|
+
@if (isSelected()) {
|
|
10333
|
+
<svg-check-icon class="ml-auto" />
|
|
10334
|
+
}
|
|
10335
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: SvgCheckIcon, selector: "svg-check-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10336
|
+
}
|
|
10337
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScAutocompleteItem, decorators: [{
|
|
10338
|
+
type: Component,
|
|
10339
|
+
args: [{ selector: 'sc-autocomplete-item', imports: [SvgCheckIcon], template: `
|
|
10340
|
+
<ng-content />
|
|
10341
|
+
|
|
10342
|
+
@if (isSelected()) {
|
|
10343
|
+
<svg-check-icon class="ml-auto" />
|
|
10344
|
+
}
|
|
10345
|
+
`, host: {
|
|
10346
|
+
'[class]': 'classes()',
|
|
10347
|
+
'[attr.data-disabled]': '_disabled()',
|
|
10348
|
+
'[attr.data-selected]': '_isActive()',
|
|
10349
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
10350
|
+
}] });
|
|
10351
|
+
|
|
10352
|
+
class ScAutocomplete {
|
|
10353
|
+
class = input('');
|
|
10354
|
+
classes = computed(() => cn('flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground', this.class()));
|
|
10355
|
+
items = signal([
|
|
10356
|
+
{
|
|
10357
|
+
id: '5b902934d965e7501f4e1c6f',
|
|
10358
|
+
label: 'Caroline Hodges',
|
|
10359
|
+
},
|
|
10360
|
+
{
|
|
10361
|
+
id: '5b9029348f7eed8b6f5f02db',
|
|
10362
|
+
label: 'Delores Rivas',
|
|
10363
|
+
},
|
|
10364
|
+
{
|
|
10365
|
+
id: '5b9029346f48c8407c64d0d5',
|
|
10366
|
+
label: 'Darlene Franklin',
|
|
10367
|
+
},
|
|
10368
|
+
{
|
|
10369
|
+
id: '5b9029341eff315fa87f9e21',
|
|
10370
|
+
label: 'Alfreda Love',
|
|
10371
|
+
},
|
|
10372
|
+
{
|
|
10373
|
+
id: '5b9029342e8917c6ccdb9865',
|
|
10374
|
+
label: 'Marcy Ratliff',
|
|
10375
|
+
},
|
|
10376
|
+
{
|
|
10377
|
+
id: '5b9029349dbb48013460e01f',
|
|
10378
|
+
label: 'Beulah Nielsen',
|
|
10379
|
+
},
|
|
10380
|
+
{
|
|
10381
|
+
id: '5b902934f4f1586e5e72d74a',
|
|
10382
|
+
label: 'Morton Kerr',
|
|
10383
|
+
},
|
|
10384
|
+
{
|
|
10385
|
+
id: '5b9029347918bb204bf7014e',
|
|
10386
|
+
label: 'Autumn Tillman',
|
|
10387
|
+
},
|
|
10388
|
+
{
|
|
10389
|
+
id: '5b902934b86f80e1fc60c626',
|
|
10390
|
+
label: 'Diane Bennett',
|
|
10391
|
+
},
|
|
10392
|
+
{
|
|
10393
|
+
id: '5b9029348999f59215020349',
|
|
10394
|
+
label: 'June Eaton',
|
|
10395
|
+
},
|
|
10396
|
+
]);
|
|
10397
|
+
searchControl = new FormControl();
|
|
10398
|
+
input = toSignal(this.searchControl.valueChanges.pipe(debounceTime(300)));
|
|
10399
|
+
filteredItems = computed(() => {
|
|
10400
|
+
if (!this.input()) {
|
|
10401
|
+
return this.items();
|
|
10402
|
+
}
|
|
10403
|
+
return this.items().filter((item) => item.label.toLowerCase().indexOf(this.input().toLowerCase()) !== -1);
|
|
10404
|
+
});
|
|
10405
|
+
selectedItem = signal(undefined);
|
|
10406
|
+
viewItems = viewChildren(ScAutocompleteItem);
|
|
10407
|
+
keyManager;
|
|
10408
|
+
ngAfterViewInit() {
|
|
10409
|
+
this.keyManager = new ActiveDescendantKeyManager(this.viewItems()).withWrap().withTypeAhead();
|
|
10410
|
+
}
|
|
10411
|
+
onKeydown(event) {
|
|
10412
|
+
if (event.keyCode === ENTER) {
|
|
10413
|
+
this.selectedItem.set(this.keyManager.activeItem ? this.keyManager.activeItem.item() : undefined);
|
|
10414
|
+
}
|
|
10415
|
+
else {
|
|
10416
|
+
this.keyManager.onKeydown(event);
|
|
10417
|
+
}
|
|
10418
|
+
}
|
|
10419
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScAutocomplete, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10420
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScAutocomplete, isStandalone: true, selector: "sc-autocomplete", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, viewQueries: [{ propertyName: "viewItems", predicate: ScAutocompleteItem, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
10421
|
+
<!--sc-autocomplete-input /-->
|
|
10422
|
+
|
|
10423
|
+
<input
|
|
10424
|
+
[formControl]="searchControl"
|
|
10425
|
+
(keyup)="onKeydown($event)"
|
|
10426
|
+
sc-input
|
|
10427
|
+
placeholder="Search..."
|
|
10428
|
+
/>
|
|
10429
|
+
|
|
10430
|
+
@for (item of filteredItems(); track $index) {
|
|
10431
|
+
<sc-autocomplete-item [item]="item" [selectedItem]="selectedItem()">
|
|
10432
|
+
{{ item.label }}
|
|
10433
|
+
</sc-autocomplete-item>
|
|
10434
|
+
}
|
|
10435
|
+
|
|
10436
|
+
<br />
|
|
10437
|
+
<br />
|
|
10438
|
+
<br />
|
|
10439
|
+
<br />
|
|
10440
|
+
|
|
10441
|
+
selectedItem : {{ selectedItem() | json }}
|
|
10442
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScInput, selector: "input[sc-input]", inputs: ["class"] }, { kind: "component", type: ScAutocompleteItem, selector: "sc-autocomplete-item", inputs: ["class", "_disabled", "item", "selectedItem"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10443
|
+
}
|
|
10444
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScAutocomplete, decorators: [{
|
|
10445
|
+
type: Component,
|
|
10446
|
+
args: [{ selector: 'sc-autocomplete', imports: [ScInput, ScAutocompleteItem, ReactiveFormsModule, JsonPipe], template: `
|
|
10447
|
+
<!--sc-autocomplete-input /-->
|
|
10448
|
+
|
|
10449
|
+
<input
|
|
10450
|
+
[formControl]="searchControl"
|
|
10451
|
+
(keyup)="onKeydown($event)"
|
|
10452
|
+
sc-input
|
|
10453
|
+
placeholder="Search..."
|
|
10454
|
+
/>
|
|
10455
|
+
|
|
10456
|
+
@for (item of filteredItems(); track $index) {
|
|
10457
|
+
<sc-autocomplete-item [item]="item" [selectedItem]="selectedItem()">
|
|
10458
|
+
{{ item.label }}
|
|
10459
|
+
</sc-autocomplete-item>
|
|
10460
|
+
}
|
|
10461
|
+
|
|
10462
|
+
<br />
|
|
10463
|
+
<br />
|
|
10464
|
+
<br />
|
|
10465
|
+
<br />
|
|
10466
|
+
|
|
10467
|
+
selectedItem : {{ selectedItem() | json }}
|
|
10468
|
+
`, host: {
|
|
10469
|
+
'[class]': 'classes()',
|
|
10470
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
10471
|
+
}] });
|
|
10472
|
+
|
|
11103
10473
|
/**
|
|
11104
10474
|
* Generated bundle index. Do not edit.
|
|
11105
10475
|
*/
|
|
11106
10476
|
|
|
11107
|
-
export { FormFieldCustomControlComponent, ScAccordion, ScAccordionContent, ScAccordionHeader, ScAccordionItem, ScAccordionItemDescription, ScAccordionTrigger, ScAlert, ScAlertDescription, ScAlertDialog, ScAlertTitle, ScAspectRatio, ScAvatar, ScBadge, ScBreadcrumb, ScBreadcrumbEllipsis, ScBreadcrumbItem, ScBreadcrumbLink, ScBreadcrumbList, ScBreadcrumbPage, ScBreadcrumbSeparator, ScButton, ScCard, ScCardContent, ScCardDescription, ScCardFooter, ScCardHeader, ScCardTitle, ScCarousel, ScCarouselContainer, ScCarouselItem, ScCarouselItems, ScCarouselNext, ScCarouselPrevious, ScCheckbox, ScCollapsible, ScCollapsibleContent, ScCollapsibleTrigger, ScCommand, ScCommandDialog, ScCommandEmpty, ScCommandError, ScCommandGroup, ScCommandInput, ScCommandItem, ScCommandList, ScCommandLoading, ScCommandSeparator, ScCommandShortcut, ScContextMenuTriggerFor, ScDataTable, ScDatePicker, ScDialog, ScDialogClose, ScDialogContent, ScDialogDescription, ScDialogFooter, ScDialogHeader, ScDialogTitle, ScEditor, ScHoverCard, ScHoverCardTriggerFor,
|
|
10477
|
+
export { FormFieldCustomControlComponent, ScAccordion, ScAccordionContent, ScAccordionHeader, ScAccordionItem, ScAccordionItemDescription, ScAccordionTrigger, ScAlert, ScAlertDescription, ScAlertDialog, ScAlertTitle, ScAspectRatio, ScAutocomplete, ScAvatar, ScBadge, ScBreadcrumb, ScBreadcrumbEllipsis, ScBreadcrumbItem, ScBreadcrumbLink, ScBreadcrumbList, ScBreadcrumbPage, ScBreadcrumbSeparator, ScButton, ScCalendar, ScCard, ScCardContent, ScCardDescription, ScCardFooter, ScCardHeader, ScCardTitle, ScCarousel, ScCarouselContainer, ScCarouselItem, ScCarouselItems, ScCarouselNext, ScCarouselPrevious, ScCheckbox, ScCollapsible, ScCollapsibleContent, ScCollapsibleTrigger, ScCommand, ScCommandDialog, ScCommandEmpty, ScCommandError, ScCommandGroup, ScCommandInput, ScCommandItem, ScCommandList, ScCommandLoading, ScCommandSeparator, ScCommandShortcut, ScContextMenuTriggerFor, ScDataTable, ScDatePicker, ScDialog, ScDialogClose, ScDialogContent, ScDialogDescription, ScDialogFooter, ScDialogHeader, ScDialogTitle, ScEditor, ScFullCalendar, ScHoverCard, ScHoverCardTriggerFor, ScInput, ScInputOTPGroup, ScInputOTPSeparator, ScInputOTPSlot, ScInputOtp, ScLabel, ScMenu, ScMenuBar, ScMenuBarItem, ScMenuCheckboxGroup, ScMenuCheckboxItem, ScMenuGroup, ScMenuItem, ScMenuLabel, ScMenuRadioGroup, ScMenuRadioItem, ScMenuSeparator, ScMenuShortcut, ScMenuTriggerFor, ScNav, ScNavItem, ScNavItemDropdown, ScNavLink, ScNavList, ScOption, ScPaginator, ScPopoverTriggerFor, ScProgress, ScRadioGroup, ScRadioItem, ScScrollArea, ScSelect, ScSheet, ScSheetClose, ScSheetConfig, ScSheetTrigger, ScSidebar, ScSidebarProvider, ScSidebarState, ScSidebarToggler, ScSkeleton, ScSlider, ScSwitch, ScTab, ScTabContent, ScTabLabel, ScTable, ScTableBody, ScTableCaption, ScTableCell, ScTableContainer, ScTableFooter, ScTableHead, ScTableHeader, ScTableRow, ScTabs, ScTextarea, ScThemeToggler, ScToast, ScToastExample, ScToggle, ScTooltip, TelInputComponent, TelModel, Toaster, buttonVariants, cn, scThemeProvider };
|
|
11108
10478
|
//# sourceMappingURL=semantic-components-ui.mjs.map
|