@semantic-components/ui 0.66.0 → 0.68.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/esm2022/lib/components/file-upload/file-upload-dropzone.js +91 -0
- package/esm2022/lib/components/file-upload/file-upload-dropzone.js.map +1 -0
- package/esm2022/lib/components/file-upload/file-upload-item-delete.js +29 -0
- package/esm2022/lib/components/file-upload/file-upload-item-delete.js.map +1 -0
- package/esm2022/lib/components/file-upload/file-upload-item-name.js +20 -0
- package/esm2022/lib/components/file-upload/file-upload-item-name.js.map +1 -0
- package/esm2022/lib/components/file-upload/file-upload-item-preview.js +51 -0
- package/esm2022/lib/components/file-upload/file-upload-item-preview.js.map +1 -0
- package/esm2022/lib/components/file-upload/file-upload-item-progress.js +34 -0
- package/esm2022/lib/components/file-upload/file-upload-item-progress.js.map +1 -0
- package/esm2022/lib/components/file-upload/file-upload-item-size.js +37 -0
- package/esm2022/lib/components/file-upload/file-upload-item-size.js.map +1 -0
- package/esm2022/lib/components/file-upload/file-upload-item.js +29 -0
- package/esm2022/lib/components/file-upload/file-upload-item.js.map +1 -0
- package/esm2022/lib/components/file-upload/file-upload-list.js +20 -0
- package/esm2022/lib/components/file-upload/file-upload-list.js.map +1 -0
- package/esm2022/lib/components/file-upload/file-upload-trigger.js +66 -0
- package/esm2022/lib/components/file-upload/file-upload-trigger.js.map +1 -0
- package/esm2022/lib/components/file-upload/file-upload.js +118 -0
- package/esm2022/lib/components/file-upload/file-upload.js.map +1 -0
- package/esm2022/lib/components/file-upload/index.js +11 -0
- package/esm2022/lib/components/file-upload/index.js.map +1 -0
- package/esm2022/lib/components/index.js +10 -2
- package/esm2022/lib/components/index.js.map +1 -1
- package/esm2022/lib/components/menu-bar/menu-bar-item.js +12 -4
- package/esm2022/lib/components/menu-bar/menu-bar-item.js.map +1 -1
- package/esm2022/lib/components/native-select/index.js +6 -0
- package/esm2022/lib/components/native-select/index.js.map +1 -0
- package/esm2022/lib/components/native-select/native-select-container.js +20 -0
- package/esm2022/lib/components/native-select/native-select-container.js.map +1 -0
- package/esm2022/lib/components/native-select/native-select-icon.js +20 -0
- package/esm2022/lib/components/native-select/native-select-icon.js.map +1 -0
- package/esm2022/lib/components/native-select/native-select-optgroup.js +20 -0
- package/esm2022/lib/components/native-select/native-select-optgroup.js.map +1 -0
- package/esm2022/lib/components/native-select/native-select-option.js +20 -0
- package/esm2022/lib/components/native-select/native-select-option.js.map +1 -0
- package/esm2022/lib/components/native-select/native-select.js +29 -0
- package/esm2022/lib/components/native-select/native-select.js.map +1 -0
- package/esm2022/lib/components/navigation-menu/index.js +9 -0
- package/esm2022/lib/components/navigation-menu/index.js.map +1 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-content.js +37 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-content.js.map +1 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-grid.js +20 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-grid.js.map +1 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-item.js +118 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-item.js.map +1 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-link.js +22 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-link.js.map +1 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-list.js +20 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-list.js.map +1 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-portal.js +14 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-portal.js.map +1 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-trigger-icon.js +22 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-trigger-icon.js.map +1 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-trigger.js +41 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu-trigger.js.map +1 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu.js +32 -0
- package/esm2022/lib/components/navigation-menu/navigation-menu.js.map +1 -0
- package/esm2022/lib/components/range-slider/index.js +4 -0
- package/esm2022/lib/components/range-slider/index.js.map +1 -0
- package/esm2022/lib/components/range-slider/range-slider-max.js +38 -0
- package/esm2022/lib/components/range-slider/range-slider-max.js.map +1 -0
- package/esm2022/lib/components/range-slider/range-slider-min.js +38 -0
- package/esm2022/lib/components/range-slider/range-slider-min.js.map +1 -0
- package/esm2022/lib/components/range-slider/range-slider-thumb-base.js +24 -0
- package/esm2022/lib/components/range-slider/range-slider-thumb-base.js.map +1 -0
- package/esm2022/lib/components/range-slider/range-slider.js +62 -0
- package/esm2022/lib/components/range-slider/range-slider.js.map +1 -0
- package/esm2022/lib/components/scroll-area/index.js +2 -0
- package/esm2022/lib/components/scroll-area/index.js.map +1 -0
- package/esm2022/lib/components/scroll-area/scroll-area.js +21 -0
- package/esm2022/lib/components/scroll-area/scroll-area.js.map +1 -0
- package/esm2022/lib/components/select/index.js +5 -1
- package/esm2022/lib/components/select/index.js.map +1 -1
- package/esm2022/lib/components/select/select-group-label.js +28 -0
- package/esm2022/lib/components/select/select-group-label.js.map +1 -0
- package/esm2022/lib/components/select/select-group.js +28 -0
- package/esm2022/lib/components/select/select-group.js.map +1 -0
- package/esm2022/lib/components/select/{select-icon.js → select-item-icon.js} +7 -7
- package/esm2022/lib/components/select/select-item-icon.js.map +1 -0
- package/esm2022/lib/components/select/select-list.js +1 -5
- package/esm2022/lib/components/select/select-list.js.map +1 -1
- package/esm2022/lib/components/select/select-popup.js +32 -0
- package/esm2022/lib/components/select/select-popup.js.map +1 -0
- package/esm2022/lib/components/select/select-separator.js +22 -0
- package/esm2022/lib/components/select/select-separator.js.map +1 -0
- package/esm2022/lib/components/select/select-trigger-icon.js +4 -2
- package/esm2022/lib/components/select/select-trigger-icon.js.map +1 -1
- package/esm2022/lib/components/select/select-trigger.js +4 -7
- package/esm2022/lib/components/select/select-trigger.js.map +1 -1
- package/esm2022/lib/components/select/select.js +6 -5
- package/esm2022/lib/components/select/select.js.map +1 -1
- package/esm2022/lib/components/slider/index.js +2 -0
- package/esm2022/lib/components/slider/index.js.map +1 -0
- package/esm2022/lib/components/slider/slider.js +46 -0
- package/esm2022/lib/components/slider/slider.js.map +1 -0
- package/esm2022/lib/components/time-picker/index.js +10 -0
- package/esm2022/lib/components/time-picker/index.js.map +1 -0
- package/esm2022/lib/components/time-picker/time-picker-hours-input.js +67 -0
- package/esm2022/lib/components/time-picker/time-picker-hours-input.js.map +1 -0
- package/esm2022/lib/components/time-picker/time-picker-input.js +26 -0
- package/esm2022/lib/components/time-picker/time-picker-input.js.map +1 -0
- package/esm2022/lib/components/time-picker/time-picker-minutes-input.js +57 -0
- package/esm2022/lib/components/time-picker/time-picker-minutes-input.js.map +1 -0
- package/esm2022/lib/components/time-picker/time-picker-period-am.js +26 -0
- package/esm2022/lib/components/time-picker/time-picker-period-am.js.map +1 -0
- package/esm2022/lib/components/time-picker/time-picker-period-pm.js +26 -0
- package/esm2022/lib/components/time-picker/time-picker-period-pm.js.map +1 -0
- package/esm2022/lib/components/time-picker/time-picker-period.js +46 -0
- package/esm2022/lib/components/time-picker/time-picker-period.js.map +1 -0
- package/esm2022/lib/components/time-picker/time-picker-seconds-input.js +57 -0
- package/esm2022/lib/components/time-picker/time-picker-seconds-input.js.map +1 -0
- package/esm2022/lib/components/time-picker/time-picker-separator.js +20 -0
- package/esm2022/lib/components/time-picker/time-picker-separator.js.map +1 -0
- package/esm2022/lib/components/time-picker/time-picker.js +58 -0
- package/esm2022/lib/components/time-picker/time-picker.js.map +1 -0
- package/esm2022/lib/components/typography/heading.js +43 -0
- package/esm2022/lib/components/typography/heading.js.map +1 -0
- package/esm2022/lib/components/typography/index.js +2 -0
- package/esm2022/lib/components/typography/index.js.map +1 -0
- package/lib/components/file-upload/file-upload-dropzone.d.ts +15 -0
- package/lib/components/file-upload/file-upload-item-delete.d.ts +10 -0
- package/lib/components/file-upload/file-upload-item-name.d.ts +7 -0
- package/lib/components/file-upload/file-upload-item-preview.d.ts +11 -0
- package/lib/components/file-upload/file-upload-item-progress.d.ts +9 -0
- package/lib/components/file-upload/file-upload-item-size.d.ts +10 -0
- package/lib/components/file-upload/file-upload-item.d.ts +9 -0
- package/lib/components/file-upload/file-upload-list.d.ts +7 -0
- package/lib/components/file-upload/file-upload-trigger.d.ts +11 -0
- package/lib/components/file-upload/file-upload.d.ts +32 -0
- package/lib/components/file-upload/index.d.ts +11 -0
- package/lib/components/index.d.ts +10 -2
- package/lib/components/menu-bar/menu-bar-item.d.ts +1 -0
- package/lib/components/native-select/index.d.ts +5 -0
- package/lib/components/native-select/native-select-container.d.ts +7 -0
- package/lib/components/native-select/native-select-icon.d.ts +7 -0
- package/lib/components/native-select/native-select-optgroup.d.ts +7 -0
- package/lib/components/native-select/native-select-option.d.ts +7 -0
- package/lib/components/native-select/native-select.d.ts +12 -0
- package/lib/components/navigation-menu/index.d.ts +8 -0
- package/lib/components/navigation-menu/navigation-menu-content.d.ts +10 -0
- package/lib/components/navigation-menu/navigation-menu-grid.d.ts +7 -0
- package/lib/components/navigation-menu/navigation-menu-item.d.ts +27 -0
- package/lib/components/navigation-menu/navigation-menu-link.d.ts +8 -0
- package/lib/components/navigation-menu/navigation-menu-list.d.ts +7 -0
- package/lib/components/navigation-menu/navigation-menu-portal.d.ts +7 -0
- package/lib/components/navigation-menu/navigation-menu-trigger-icon.d.ts +8 -0
- package/lib/components/navigation-menu/navigation-menu-trigger.d.ts +12 -0
- package/lib/components/navigation-menu/navigation-menu.d.ts +10 -0
- package/lib/components/range-slider/index.d.ts +3 -0
- package/lib/components/range-slider/range-slider-max.d.ts +10 -0
- package/lib/components/range-slider/range-slider-min.d.ts +10 -0
- package/lib/components/range-slider/range-slider-thumb-base.d.ts +2 -0
- package/lib/components/range-slider/range-slider.d.ts +21 -0
- package/lib/components/scroll-area/index.d.ts +1 -0
- package/lib/components/scroll-area/scroll-area.d.ts +7 -0
- package/lib/components/select/index.d.ts +5 -1
- package/lib/components/select/select-group-label.d.ts +7 -0
- package/lib/components/select/select-group.d.ts +7 -0
- package/lib/components/select/select-item-icon.d.ts +7 -0
- package/lib/components/select/select-list.d.ts +0 -1
- package/lib/components/select/select-popup.d.ts +8 -0
- package/lib/components/select/select-separator.d.ts +7 -0
- package/lib/components/select/select-trigger-icon.d.ts +1 -0
- package/lib/components/select/select-trigger.d.ts +3 -4
- package/lib/components/select/select.d.ts +3 -2
- package/lib/components/slider/index.d.ts +1 -0
- package/lib/components/slider/slider.d.ts +15 -0
- package/lib/components/time-picker/index.d.ts +10 -0
- package/lib/components/time-picker/time-picker-hours-input.d.ts +14 -0
- package/lib/components/time-picker/time-picker-input.d.ts +9 -0
- package/lib/components/time-picker/time-picker-minutes-input.d.ts +12 -0
- package/lib/components/time-picker/time-picker-period-am.d.ts +8 -0
- package/lib/components/time-picker/time-picker-period-pm.d.ts +8 -0
- package/lib/components/time-picker/time-picker-period.d.ts +12 -0
- package/lib/components/time-picker/time-picker-seconds-input.d.ts +12 -0
- package/lib/components/time-picker/time-picker-separator.d.ts +7 -0
- package/lib/components/time-picker/time-picker.d.ts +26 -0
- package/lib/components/typography/heading.d.ts +15 -0
- package/lib/components/typography/index.d.ts +1 -0
- package/package.json +1 -1
- package/esm2022/lib/components/select/select-icon.js.map +0 -1
- package/lib/components/select/select-icon.d.ts +0 -7
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { SC_FILE_UPLOAD, ScFileUpload } from './file-upload';
|
|
2
|
+
export { ScFileUploadDropzone } from './file-upload-dropzone';
|
|
3
|
+
export { ScFileUploadTrigger } from './file-upload-trigger';
|
|
4
|
+
export { ScFileUploadList } from './file-upload-list';
|
|
5
|
+
export { ScFileUploadItem } from './file-upload-item';
|
|
6
|
+
export { ScFileUploadItemPreview } from './file-upload-item-preview';
|
|
7
|
+
export { ScFileUploadItemName } from './file-upload-item-name';
|
|
8
|
+
export { ScFileUploadItemSize } from './file-upload-item-size';
|
|
9
|
+
export { ScFileUploadItemDelete } from './file-upload-item-delete';
|
|
10
|
+
export { ScFileUploadItemProgress } from './file-upload-item-progress';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/file-upload/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["export { SC_FILE_UPLOAD, ScFileUpload } from './file-upload';\nexport type { ScFileUploadFile } from './file-upload';\nexport { ScFileUploadDropzone } from './file-upload-dropzone';\nexport { ScFileUploadTrigger } from './file-upload-trigger';\nexport { ScFileUploadList } from './file-upload-list';\nexport { ScFileUploadItem } from './file-upload-item';\nexport { ScFileUploadItemPreview } from './file-upload-item-preview';\nexport { ScFileUploadItemName } from './file-upload-item-name';\nexport { ScFileUploadItemSize } from './file-upload-item-size';\nexport { ScFileUploadItemDelete } from './file-upload-item-delete';\nexport { ScFileUploadItemProgress } from './file-upload-item-progress';\n"]}
|
|
@@ -10,13 +10,14 @@ export * from './button';
|
|
|
10
10
|
export * from './button-group';
|
|
11
11
|
export * from './calendar';
|
|
12
12
|
export * from './card';
|
|
13
|
-
export * from './collapsible';
|
|
14
13
|
export * from './checkbox';
|
|
14
|
+
export * from './collapsible';
|
|
15
15
|
export * from './date-picker';
|
|
16
16
|
export * from './dialog';
|
|
17
17
|
export * from './drawer';
|
|
18
18
|
export * from './empty';
|
|
19
19
|
export * from './field';
|
|
20
|
+
export * from './file-upload';
|
|
20
21
|
export * from './hover-card';
|
|
21
22
|
export * from './input';
|
|
22
23
|
export * from './input-group';
|
|
@@ -26,22 +27,29 @@ export * from './label';
|
|
|
26
27
|
export * from './link';
|
|
27
28
|
export * from './menu';
|
|
28
29
|
export * from './menu-bar';
|
|
30
|
+
export * from './native-select';
|
|
31
|
+
export * from './navigation-menu';
|
|
29
32
|
export * from './pagination';
|
|
30
33
|
export * from './popover';
|
|
31
34
|
export * from './progress';
|
|
32
35
|
export * from './radio-group';
|
|
36
|
+
export * from './range-slider';
|
|
37
|
+
export * from './scroll-area';
|
|
33
38
|
export * from './select';
|
|
34
39
|
export * from './separator';
|
|
35
40
|
export * from './sheet';
|
|
36
41
|
export * from './skeleton';
|
|
42
|
+
export * from './slider';
|
|
37
43
|
export * from './spinner';
|
|
38
44
|
export * from './switch';
|
|
39
45
|
export * from './table';
|
|
40
46
|
export * from './tabs';
|
|
41
47
|
export * from './textarea';
|
|
48
|
+
export * from './time-picker';
|
|
49
|
+
export * from './toast';
|
|
42
50
|
export * from './toggle';
|
|
43
51
|
export * from './toggle-group';
|
|
44
52
|
export * from './toolbar';
|
|
45
|
-
export * from './toast';
|
|
46
53
|
export * from './tooltip';
|
|
54
|
+
export * from './typography';
|
|
47
55
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/ui/src/lib/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/ui/src/lib/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC","sourcesContent":["export * from './accordion';\nexport * from './alert';\nexport * from './alert-dialog';\nexport * from './aspect-ratio';\nexport * from './avatar';\nexport * from './backdrop';\nexport * from './badge';\nexport * from './breadcrumb';\nexport * from './button';\nexport * from './button-group';\nexport * from './calendar';\nexport * from './card';\nexport * from './checkbox';\nexport * from './collapsible';\nexport * from './date-picker';\nexport * from './dialog';\nexport * from './drawer';\nexport * from './empty';\nexport * from './field';\nexport * from './file-upload';\nexport * from './hover-card';\nexport * from './input';\nexport * from './input-group';\nexport * from './item';\nexport * from './kbd';\nexport * from './label';\nexport * from './link';\nexport * from './menu';\nexport * from './menu-bar';\nexport * from './native-select';\nexport * from './navigation-menu';\nexport * from './pagination';\nexport * from './popover';\nexport * from './progress';\nexport * from './radio-group';\nexport * from './range-slider';\nexport * from './scroll-area';\nexport * from './select';\nexport * from './separator';\nexport * from './sheet';\nexport * from './skeleton';\nexport * from './slider';\nexport * from './spinner';\nexport * from './switch';\nexport * from './table';\nexport * from './tabs';\nexport * from './textarea';\nexport * from './time-picker';\nexport * from './toast';\nexport * from './toggle';\nexport * from './toggle-group';\nexport * from './toolbar';\nexport * from './tooltip';\nexport * from './typography';\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, contentChild, effect, inject, input, ViewEncapsulation, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, contentChild, effect, inject, input, viewChild, ViewEncapsulation, } from '@angular/core';
|
|
2
2
|
import { NgTemplateOutlet } from '@angular/common';
|
|
3
|
-
import { CdkOverlayOrigin, OverlayModule } from '@angular/cdk/overlay';
|
|
3
|
+
import { CdkConnectedOverlay, CdkOverlayOrigin, OverlayModule, } from '@angular/cdk/overlay';
|
|
4
4
|
import { MenuItem } from '@angular/aria/menu';
|
|
5
5
|
import { SIGNAL, signalSetFn } from '@angular/core/primitives/signals';
|
|
6
6
|
import { cn } from '../../utils';
|
|
@@ -14,6 +14,7 @@ export class ScMenuBarItem {
|
|
|
14
14
|
overlayOrigin = inject(CdkOverlayOrigin);
|
|
15
15
|
menuItem = inject(MenuItem);
|
|
16
16
|
submenuPortal = contentChild(ScMenuPortal, ...(ngDevMode ? [{ debugName: "submenuPortal" }] : []));
|
|
17
|
+
connectedOverlay = viewChild(CdkConnectedOverlay, ...(ngDevMode ? [{ debugName: "connectedOverlay" }] : []));
|
|
17
18
|
scMenuBar = inject(ScMenuBar);
|
|
18
19
|
rendered = computed(() => this.scMenuBar.rendered(), ...(ngDevMode ? [{ debugName: "rendered" }] : []));
|
|
19
20
|
class = computed(() => cn('flex items-center rounded-sm px-2 py-0.5 text-sm font-medium outline-hidden select-none cursor-default hover:bg-muted aria-expanded:bg-muted focus-visible:outline-2 focus-visible:outline-ring', this.classInput()), ...(ngDevMode ? [{ debugName: "class" }] : []));
|
|
@@ -24,9 +25,16 @@ export class ScMenuBarItem {
|
|
|
24
25
|
signalSetFn(this.menuItem.submenu[SIGNAL], menu);
|
|
25
26
|
}
|
|
26
27
|
});
|
|
28
|
+
// Force overlay to recalculate position when menu item expands
|
|
29
|
+
effect(() => {
|
|
30
|
+
const expanded = this.menuItem.expanded();
|
|
31
|
+
if (expanded) {
|
|
32
|
+
this.connectedOverlay()?.overlayRef?.updatePosition();
|
|
33
|
+
}
|
|
34
|
+
});
|
|
27
35
|
}
|
|
28
36
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScMenuBarItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: ScMenuBarItem, isStandalone: true, selector: "[scMenuBarItem]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "menu-bar-item" }, properties: { "class": "class()" } }, queries: [{ propertyName: "submenuPortal", first: true, predicate: ScMenuPortal, descendants: true, isSignal: true }], exportAs: ["scMenuBarItem"], hostDirectives: [{ directive: i1.MenuItem, inputs: ["id", "id", "value", "value", "disabled", "disabled"] }, { directive: i2.CdkOverlayOrigin }], ngImport: i0, template: `
|
|
37
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: ScMenuBarItem, isStandalone: true, selector: "[scMenuBarItem]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "menu-bar-item" }, properties: { "class": "class()" } }, queries: [{ propertyName: "submenuPortal", first: true, predicate: ScMenuPortal, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "connectedOverlay", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }], exportAs: ["scMenuBarItem"], hostDirectives: [{ directive: i1.MenuItem, inputs: ["id", "id", "value", "value", "disabled", "disabled"] }, { directive: i2.CdkOverlayOrigin }], ngImport: i0, template: `
|
|
30
38
|
<ng-content />
|
|
31
39
|
|
|
32
40
|
@if (submenuPortal(); as portal) {
|
|
@@ -91,5 +99,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
|
|
|
91
99
|
encapsulation: ViewEncapsulation.None,
|
|
92
100
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
93
101
|
}]
|
|
94
|
-
}], ctorParameters: () => [], propDecorators: { classInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], submenuPortal: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ScMenuPortal), { isSignal: true }] }] } });
|
|
102
|
+
}], ctorParameters: () => [], propDecorators: { classInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], submenuPortal: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ScMenuPortal), { isSignal: true }] }], connectedOverlay: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkConnectedOverlay), { isSignal: true }] }] } });
|
|
95
103
|
//# sourceMappingURL=menu-bar-item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-bar-item.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/menu-bar/menu-bar-item.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,MAAM,EACN,KAAK,EACL,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"menu-bar-item.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/menu-bar/menu-bar-item.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,MAAM,EACN,KAAK,EACL,SAAS,EACT,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;;;;AA0CvC,MAAM,OAAO,aAAa;IACf,UAAU,GAAG,KAAK,CAAS,EAAE,uDAAI,KAAK,EAAE,OAAO,GAAG,CAAC;IACnD,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACjC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,aAAa,GAAG,YAAY,CAAC,YAAY,yDAAC,CAAC;IAC7C,gBAAgB,GAAG,SAAS,CAAC,mBAAmB,4DAAC,CAAC;IAElD,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAE5B,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,oDAAC,CAAC;IAErD,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CACvC,EAAE,CACA,iMAAiM,EACjM,IAAI,CAAC,UAAU,EAAE,CAClB,iDACF,CAAC;IAEF;QACE,MAAM,CAAC,GAAG,EAAE;YACV,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC;YAC1C,IAAI,IAAI,EAAE,CAAC;gBACT,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,+DAA+D;QAC/D,MAAM,CAAC,GAAG,EAAE;YACV,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;uGAjCU,aAAa;2FAAb,aAAa,gWAIwB,YAAY,kHACd,mBAAmB,+OAlCvD;;;;;;;;;;;;;;;;;;;;;GAqBT,2DA7BS,aAAa,0nCAAE,gBAAgB;;2FAqC9B,aAAa;kBAxCzB,SAAS;mBAAC;oBACT,QAAQ,EAAE,iBAAiB;oBAC3B,QAAQ,EAAE,eAAe;oBACzB,OAAO,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC;oBAC1C,cAAc,EAAE;wBACd;4BACE,SAAS,EAAE,QAAQ;4BACnB,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC;yBACpC;wBACD,gBAAgB;qBACjB;oBACD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;GAqBT;oBACD,IAAI,EAAE;wBACJ,WAAW,EAAE,eAAe;wBAC5B,SAAS,EAAE,SAAS;qBACrB;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;2NAKiD,YAAY,+FACd,mBAAmB","sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n inject,\n input,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { MenuItem } from '@angular/aria/menu';\nimport { SIGNAL, signalSetFn } from '@angular/core/primitives/signals';\nimport { cn } from '../../utils';\nimport { ScMenuPortal } from '../menu';\nimport { ScMenuBar } from './menu-bar';\n\n@Component({\n selector: '[scMenuBarItem]',\n exportAs: 'scMenuBarItem',\n imports: [OverlayModule, NgTemplateOutlet],\n hostDirectives: [\n {\n directive: MenuItem,\n inputs: ['id', 'value', 'disabled'],\n },\n CdkOverlayOrigin,\n ],\n template: `\n <ng-content />\n\n @if (submenuPortal(); as portal) {\n <ng-template\n [cdkConnectedOverlayOpen]=\"rendered()\"\n [cdkConnectedOverlay]=\"{ origin: overlayOrigin, usePopover: 'inline' }\"\n [cdkConnectedOverlayPositions]=\"[\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n ]\"\n cdkAttachPopoverAsChild\n >\n <ng-container [ngTemplateOutlet]=\"portal.templateRef\" />\n </ng-template>\n }\n `,\n host: {\n 'data-slot': 'menu-bar-item',\n '[class]': 'class()',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScMenuBarItem {\n readonly classInput = input<string>('', { alias: 'class' });\n readonly overlayOrigin = inject(CdkOverlayOrigin);\n private readonly menuItem = inject(MenuItem);\n protected readonly submenuPortal = contentChild(ScMenuPortal);\n private readonly connectedOverlay = viewChild(CdkConnectedOverlay);\n\n private readonly scMenuBar = inject(ScMenuBar);\n\n protected readonly rendered = computed(() => this.scMenuBar.rendered());\n\n protected readonly class = computed(() =>\n cn(\n 'flex items-center rounded-sm px-2 py-0.5 text-sm font-medium outline-hidden select-none cursor-default hover:bg-muted aria-expanded:bg-muted focus-visible:outline-2 focus-visible:outline-ring',\n this.classInput(),\n ),\n );\n\n constructor() {\n effect(() => {\n const menu = this.submenuPortal()?.menu();\n if (menu) {\n signalSetFn(this.menuItem.submenu[SIGNAL], menu);\n }\n });\n\n // Force overlay to recalculate position when menu item expands\n effect(() => {\n const expanded = this.menuItem.expanded();\n if (expanded) {\n this.connectedOverlay()?.overlayRef?.updatePosition();\n }\n });\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/native-select/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC","sourcesContent":["export * from './native-select-container';\nexport * from './native-select';\nexport * from './native-select-icon';\nexport * from './native-select-option';\nexport * from './native-select-optgroup';\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { computed, Directive, input } from '@angular/core';
|
|
2
|
+
import { cn } from '../../utils';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ScNativeSelectContainer {
|
|
5
|
+
classInput = input('', { ...(ngDevMode ? { debugName: "classInput" } : {}), alias: 'class' });
|
|
6
|
+
class = computed(() => cn('group/native-select relative w-fit has-[select:disabled]:opacity-50', this.classInput()), ...(ngDevMode ? [{ debugName: "class" }] : []));
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNativeSelectContainer, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: ScNativeSelectContainer, isStandalone: true, selector: "div[scNativeSelectContainer]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "native-select-container" }, properties: { "class": "class()" } }, ngImport: i0 });
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNativeSelectContainer, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: 'div[scNativeSelectContainer]',
|
|
14
|
+
host: {
|
|
15
|
+
'data-slot': 'native-select-container',
|
|
16
|
+
'[class]': 'class()',
|
|
17
|
+
},
|
|
18
|
+
}]
|
|
19
|
+
}], propDecorators: { classInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
20
|
+
//# sourceMappingURL=native-select-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-select-container.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/native-select/native-select-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;;AASjC,MAAM,OAAO,uBAAuB;IACzB,UAAU,GAAG,KAAK,CAAS,EAAE,uDAAI,KAAK,EAAE,OAAO,GAAG,CAAC;IAEzC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CACvC,EAAE,CACA,qEAAqE,EACrE,IAAI,CAAC,UAAU,EAAE,CAClB,iDACF,CAAC;uGARS,uBAAuB;2FAAvB,uBAAuB;;2FAAvB,uBAAuB;kBAPnC,SAAS;mBAAC;oBACT,QAAQ,EAAE,8BAA8B;oBACxC,IAAI,EAAE;wBACJ,WAAW,EAAE,yBAAyB;wBACtC,SAAS,EAAE,SAAS;qBACrB;iBACF","sourcesContent":["import { computed, Directive, input } from '@angular/core';\nimport { cn } from '../../utils';\n\n@Directive({\n selector: 'div[scNativeSelectContainer]',\n host: {\n 'data-slot': 'native-select-container',\n '[class]': 'class()',\n },\n})\nexport class ScNativeSelectContainer {\n readonly classInput = input<string>('', { alias: 'class' });\n\n protected readonly class = computed(() =>\n cn(\n 'group/native-select relative w-fit has-[select:disabled]:opacity-50',\n this.classInput(),\n ),\n );\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { computed, Directive, input } from '@angular/core';
|
|
2
|
+
import { cn } from '../../utils';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ScNativeSelectIcon {
|
|
5
|
+
classInput = input('', { ...(ngDevMode ? { debugName: "classInput" } : {}), alias: 'class' });
|
|
6
|
+
class = computed(() => cn('text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2 pointer-events-none absolute select-none', this.classInput()), ...(ngDevMode ? [{ debugName: "class" }] : []));
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNativeSelectIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: ScNativeSelectIcon, isStandalone: true, selector: "[scNativeSelectIcon]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "native-select-icon" }, properties: { "class": "class()" } }, ngImport: i0 });
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNativeSelectIcon, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: '[scNativeSelectIcon]',
|
|
14
|
+
host: {
|
|
15
|
+
'data-slot': 'native-select-icon',
|
|
16
|
+
'[class]': 'class()',
|
|
17
|
+
},
|
|
18
|
+
}]
|
|
19
|
+
}], propDecorators: { classInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
20
|
+
//# sourceMappingURL=native-select-icon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-select-icon.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/native-select/native-select-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;;AASjC,MAAM,OAAO,kBAAkB;IACpB,UAAU,GAAG,KAAK,CAAS,EAAE,uDAAI,KAAK,EAAE,OAAO,GAAG,CAAC;IAEzC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CACvC,EAAE,CACA,0GAA0G,EAC1G,IAAI,CAAC,UAAU,EAAE,CAClB,iDACF,CAAC;uGARS,kBAAkB;2FAAlB,kBAAkB;;2FAAlB,kBAAkB;kBAP9B,SAAS;mBAAC;oBACT,QAAQ,EAAE,sBAAsB;oBAChC,IAAI,EAAE;wBACJ,WAAW,EAAE,oBAAoB;wBACjC,SAAS,EAAE,SAAS;qBACrB;iBACF","sourcesContent":["import { computed, Directive, input } from '@angular/core';\nimport { cn } from '../../utils';\n\n@Directive({\n selector: '[scNativeSelectIcon]',\n host: {\n 'data-slot': 'native-select-icon',\n '[class]': 'class()',\n },\n})\nexport class ScNativeSelectIcon {\n readonly classInput = input<string>('', { alias: 'class' });\n\n protected readonly class = computed(() =>\n cn(\n 'text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2 pointer-events-none absolute select-none',\n this.classInput(),\n ),\n );\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { computed, Directive, input } from '@angular/core';
|
|
2
|
+
import { cn } from '../../utils';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ScNativeSelectOptGroup {
|
|
5
|
+
classInput = input('', { ...(ngDevMode ? { debugName: "classInput" } : {}), alias: 'class' });
|
|
6
|
+
class = computed(() => cn(this.classInput()), ...(ngDevMode ? [{ debugName: "class" }] : []));
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNativeSelectOptGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: ScNativeSelectOptGroup, isStandalone: true, selector: "optgroup[scNativeSelectOptgroup]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "native-select-optgroup" }, properties: { "class": "class()" } }, ngImport: i0 });
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNativeSelectOptGroup, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: 'optgroup[scNativeSelectOptgroup]',
|
|
14
|
+
host: {
|
|
15
|
+
'data-slot': 'native-select-optgroup',
|
|
16
|
+
'[class]': 'class()',
|
|
17
|
+
},
|
|
18
|
+
}]
|
|
19
|
+
}], propDecorators: { classInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
20
|
+
//# sourceMappingURL=native-select-optgroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-select-optgroup.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/native-select/native-select-optgroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;;AASjC,MAAM,OAAO,sBAAsB;IACxB,UAAU,GAAG,KAAK,CAAS,EAAE,uDAAI,KAAK,EAAE,OAAO,GAAG,CAAC;IAEzC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,iDAAC,CAAC;uGAHtD,sBAAsB;2FAAtB,sBAAsB;;2FAAtB,sBAAsB;kBAPlC,SAAS;mBAAC;oBACT,QAAQ,EAAE,kCAAkC;oBAC5C,IAAI,EAAE;wBACJ,WAAW,EAAE,wBAAwB;wBACrC,SAAS,EAAE,SAAS;qBACrB;iBACF","sourcesContent":["import { computed, Directive, input } from '@angular/core';\nimport { cn } from '../../utils';\n\n@Directive({\n selector: 'optgroup[scNativeSelectOptgroup]',\n host: {\n 'data-slot': 'native-select-optgroup',\n '[class]': 'class()',\n },\n})\nexport class ScNativeSelectOptGroup {\n readonly classInput = input<string>('', { alias: 'class' });\n\n protected readonly class = computed(() => cn(this.classInput()));\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { computed, Directive, input } from '@angular/core';
|
|
2
|
+
import { cn } from '../../utils';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ScNativeSelectOption {
|
|
5
|
+
classInput = input('', { ...(ngDevMode ? { debugName: "classInput" } : {}), alias: 'class' });
|
|
6
|
+
class = computed(() => cn(this.classInput()), ...(ngDevMode ? [{ debugName: "class" }] : []));
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNativeSelectOption, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: ScNativeSelectOption, isStandalone: true, selector: "option[scNativeSelectOption]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "native-select-option" }, properties: { "class": "class()" } }, ngImport: i0 });
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNativeSelectOption, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: 'option[scNativeSelectOption]',
|
|
14
|
+
host: {
|
|
15
|
+
'data-slot': 'native-select-option',
|
|
16
|
+
'[class]': 'class()',
|
|
17
|
+
},
|
|
18
|
+
}]
|
|
19
|
+
}], propDecorators: { classInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
20
|
+
//# sourceMappingURL=native-select-option.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-select-option.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/native-select/native-select-option.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;;AASjC,MAAM,OAAO,oBAAoB;IACtB,UAAU,GAAG,KAAK,CAAS,EAAE,uDAAI,KAAK,EAAE,OAAO,GAAG,CAAC;IAEzC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,iDAAC,CAAC;uGAHtD,oBAAoB;2FAApB,oBAAoB;;2FAApB,oBAAoB;kBAPhC,SAAS;mBAAC;oBACT,QAAQ,EAAE,8BAA8B;oBACxC,IAAI,EAAE;wBACJ,WAAW,EAAE,sBAAsB;wBACnC,SAAS,EAAE,SAAS;qBACrB;iBACF","sourcesContent":["import { computed, Directive, input } from '@angular/core';\nimport { cn } from '../../utils';\n\n@Directive({\n selector: 'option[scNativeSelectOption]',\n host: {\n 'data-slot': 'native-select-option',\n '[class]': 'class()',\n },\n})\nexport class ScNativeSelectOption {\n readonly classInput = input<string>('', { alias: 'class' });\n\n protected readonly class = computed(() => cn(this.classInput()));\n}\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
2
|
+
import { computed, Directive, inject, input } from '@angular/core';
|
|
3
|
+
import { cn } from '../../utils';
|
|
4
|
+
import { SC_FIELD } from '../field';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class ScNativeSelect {
|
|
7
|
+
field = inject(SC_FIELD, { optional: true });
|
|
8
|
+
fallbackId = inject(_IdGenerator).getId('sc-native-select-');
|
|
9
|
+
idInput = input('', { ...(ngDevMode ? { debugName: "idInput" } : {}), alias: 'id' });
|
|
10
|
+
classInput = input('', { ...(ngDevMode ? { debugName: "classInput" } : {}), alias: 'class' });
|
|
11
|
+
size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
12
|
+
id = computed(() => this.idInput() || this.field?.id() || this.fallbackId, ...(ngDevMode ? [{ debugName: "id" }] : []));
|
|
13
|
+
class = computed(() => cn('border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-8 w-full min-w-0 appearance-none rounded-lg border bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 outline-none disabled:pointer-events-none disabled:cursor-not-allowed', this.classInput()), ...(ngDevMode ? [{ debugName: "class" }] : []));
|
|
14
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNativeSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
15
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: ScNativeSelect, isStandalone: true, selector: "select[scNativeSelect]", inputs: { idInput: { classPropertyName: "idInput", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "native-select" }, properties: { "attr.id": "id()", "attr.data-size": "size()", "class": "class()" } }, ngImport: i0 });
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNativeSelect, decorators: [{
|
|
18
|
+
type: Directive,
|
|
19
|
+
args: [{
|
|
20
|
+
selector: 'select[scNativeSelect]',
|
|
21
|
+
host: {
|
|
22
|
+
'data-slot': 'native-select',
|
|
23
|
+
'[attr.id]': 'id()',
|
|
24
|
+
'[attr.data-size]': 'size()',
|
|
25
|
+
'[class]': 'class()',
|
|
26
|
+
},
|
|
27
|
+
}]
|
|
28
|
+
}], propDecorators: { idInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], classInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
29
|
+
//# sourceMappingURL=native-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-select.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/native-select/native-select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;;AAWpC,MAAM,OAAO,cAAc;IACR,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAErE,OAAO,GAAG,KAAK,CAAC,EAAE,oDAAI,KAAK,EAAE,IAAI,GAAG,CAAC;IACrC,UAAU,GAAG,KAAK,CAAS,EAAE,uDAAI,KAAK,EAAE,OAAO,GAAG,CAAC;IACnD,IAAI,GAAG,KAAK,CAAmB,SAAS,gDAAC,CAAC;IAE1C,EAAE,GAAG,QAAQ,CACpB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,UAAU,8CAC5D,CAAC;IAEiB,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CACvC,EAAE,CACA,0pBAA0pB,EAC1pB,IAAI,CAAC,UAAU,EAAE,CAClB,iDACF,CAAC;uGAjBS,cAAc;2FAAd,cAAc;;2FAAd,cAAc;kBAT1B,SAAS;mBAAC;oBACT,QAAQ,EAAE,wBAAwB;oBAClC,IAAI,EAAE;wBACJ,WAAW,EAAE,eAAe;wBAC5B,WAAW,EAAE,MAAM;wBACnB,kBAAkB,EAAE,QAAQ;wBAC5B,SAAS,EAAE,SAAS;qBACrB;iBACF","sourcesContent":["import { _IdGenerator } from '@angular/cdk/a11y';\nimport { computed, Directive, inject, input } from '@angular/core';\nimport { cn } from '../../utils';\nimport { SC_FIELD } from '../field';\n\n@Directive({\n selector: 'select[scNativeSelect]',\n host: {\n 'data-slot': 'native-select',\n '[attr.id]': 'id()',\n '[attr.data-size]': 'size()',\n '[class]': 'class()',\n },\n})\nexport class ScNativeSelect {\n private readonly field = inject(SC_FIELD, { optional: true });\n private readonly fallbackId = inject(_IdGenerator).getId('sc-native-select-');\n\n readonly idInput = input('', { alias: 'id' });\n readonly classInput = input<string>('', { alias: 'class' });\n readonly size = input<'default' | 'sm'>('default');\n\n readonly id = computed(\n () => this.idInput() || this.field?.id() || this.fallbackId,\n );\n\n protected readonly class = computed(() =>\n cn(\n 'border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-8 w-full min-w-0 appearance-none rounded-lg border bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 outline-none disabled:pointer-events-none disabled:cursor-not-allowed',\n this.classInput(),\n ),\n );\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { ScNavigationMenu } from './navigation-menu';
|
|
2
|
+
export { ScNavigationMenuContent } from './navigation-menu-content';
|
|
3
|
+
export { ScNavigationMenuGrid } from './navigation-menu-grid';
|
|
4
|
+
export { ScNavigationMenuItem } from './navigation-menu-item';
|
|
5
|
+
export { ScNavigationMenuLink } from './navigation-menu-link';
|
|
6
|
+
export { ScNavigationMenuList } from './navigation-menu-list';
|
|
7
|
+
export { ScNavigationMenuPortal } from './navigation-menu-portal';
|
|
8
|
+
export { ScNavigationMenuTrigger } from './navigation-menu-trigger';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/navigation-menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC","sourcesContent":["export { ScNavigationMenu } from './navigation-menu';\nexport { ScNavigationMenuContent } from './navigation-menu-content';\nexport { ScNavigationMenuGrid } from './navigation-menu-grid';\nexport { ScNavigationMenuItem } from './navigation-menu-item';\nexport { ScNavigationMenuLink } from './navigation-menu-link';\nexport { ScNavigationMenuList } from './navigation-menu-list';\nexport { ScNavigationMenuPortal } from './navigation-menu-portal';\nexport { ScNavigationMenuTrigger } from './navigation-menu-trigger';\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { cn } from '../../utils';
|
|
3
|
+
import { ScNavigationMenuItem } from './navigation-menu-item';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ScNavigationMenuContent {
|
|
6
|
+
menuItem = inject(ScNavigationMenuItem);
|
|
7
|
+
classInput = input('', { ...(ngDevMode ? { debugName: "classInput" } : {}), alias: 'class' });
|
|
8
|
+
class = computed(() => cn('block', 'left-0 top-0 w-full md:absolute md:w-auto', 'bg-popover text-popover-foreground', 'rounded-md border shadow-lg', 'overflow-hidden', 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out', 'data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out', 'data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52', 'data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52', '**:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none', this.classInput()), ...(ngDevMode ? [{ debugName: "class" }] : []));
|
|
9
|
+
onMouseEnter() {
|
|
10
|
+
this.menuItem.cancelHide();
|
|
11
|
+
}
|
|
12
|
+
onMouseLeave() {
|
|
13
|
+
this.menuItem.onMouseLeave();
|
|
14
|
+
}
|
|
15
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNavigationMenuContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.5", type: ScNavigationMenuContent, isStandalone: true, selector: "div[scNavigationMenuContent]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "navigation-menu-content" }, listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, properties: { "class": "class()" } }, ngImport: i0, template: `
|
|
17
|
+
<ng-content />
|
|
18
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNavigationMenuContent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{
|
|
23
|
+
selector: 'div[scNavigationMenuContent]',
|
|
24
|
+
template: `
|
|
25
|
+
<ng-content />
|
|
26
|
+
`,
|
|
27
|
+
host: {
|
|
28
|
+
'data-slot': 'navigation-menu-content',
|
|
29
|
+
'[class]': 'class()',
|
|
30
|
+
'(mouseenter)': 'onMouseEnter()',
|
|
31
|
+
'(mouseleave)': 'onMouseLeave()',
|
|
32
|
+
},
|
|
33
|
+
encapsulation: ViewEncapsulation.None,
|
|
34
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
35
|
+
}]
|
|
36
|
+
}], propDecorators: { classInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
37
|
+
//# sourceMappingURL=navigation-menu-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-menu-content.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/navigation-menu/navigation-menu-content.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,EACL,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;;AAgB9D,MAAM,OAAO,uBAAuB;IACjB,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChD,UAAU,GAAG,KAAK,CAAS,EAAE,uDAAI,KAAK,EAAE,OAAO,GAAG,CAAC;IAEzC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CACvC,EAAE,CACA,OAAO,EACP,2CAA2C,EAC3C,oCAAoC,EACpC,6BAA6B,EAC7B,iBAAiB,EACjB,gEAAgE,EAChE,0DAA0D,EAC1D,8FAA8F,EAC9F,wFAAwF,EACxF,yGAAyG,EACzG,IAAI,CAAC,UAAU,EAAE,CAClB,iDACF,CAAC;IAEF,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC/B,CAAC;uGA1BU,uBAAuB;2FAAvB,uBAAuB,2ZAZxB;;GAET;;2FAUU,uBAAuB;kBAdnC,SAAS;mBAAC;oBACT,QAAQ,EAAE,8BAA8B;oBACxC,QAAQ,EAAE;;GAET;oBACD,IAAI,EAAE;wBACJ,WAAW,EAAE,yBAAyB;wBACtC,SAAS,EAAE,SAAS;wBACpB,cAAc,EAAE,gBAAgB;wBAChC,cAAc,EAAE,gBAAgB;qBACjC;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD","sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { cn } from '../../utils';\nimport { ScNavigationMenuItem } from './navigation-menu-item';\n\n@Component({\n selector: 'div[scNavigationMenuContent]',\n template: `\n <ng-content />\n `,\n host: {\n 'data-slot': 'navigation-menu-content',\n '[class]': 'class()',\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNavigationMenuContent {\n private readonly menuItem = inject(ScNavigationMenuItem);\n readonly classInput = input<string>('', { alias: 'class' });\n\n protected readonly class = computed(() =>\n cn(\n 'block',\n 'left-0 top-0 w-full md:absolute md:w-auto',\n 'bg-popover text-popover-foreground',\n 'rounded-md border shadow-lg',\n 'overflow-hidden',\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out',\n 'data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out',\n 'data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52',\n 'data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52',\n '**:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none',\n this.classInput(),\n ),\n );\n\n onMouseEnter(): void {\n this.menuItem.cancelHide();\n }\n\n onMouseLeave(): void {\n this.menuItem.onMouseLeave();\n }\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { computed, Directive, input } from '@angular/core';
|
|
2
|
+
import { cn } from '../../utils';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ScNavigationMenuGrid {
|
|
5
|
+
classInput = input('', { ...(ngDevMode ? { debugName: "classInput" } : {}), alias: 'class' });
|
|
6
|
+
class = computed(() => cn('grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2 lg:w-[600px]', this.classInput()), ...(ngDevMode ? [{ debugName: "class" }] : []));
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNavigationMenuGrid, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: ScNavigationMenuGrid, isStandalone: true, selector: "ul[scNavigationMenuGrid]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "navigation-menu-grid" }, properties: { "class": "class()" } }, ngImport: i0 });
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNavigationMenuGrid, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: 'ul[scNavigationMenuGrid]',
|
|
14
|
+
host: {
|
|
15
|
+
'data-slot': 'navigation-menu-grid',
|
|
16
|
+
'[class]': 'class()',
|
|
17
|
+
},
|
|
18
|
+
}]
|
|
19
|
+
}], propDecorators: { classInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
20
|
+
//# sourceMappingURL=navigation-menu-grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-menu-grid.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/navigation-menu/navigation-menu-grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;;AASjC,MAAM,OAAO,oBAAoB;IACtB,UAAU,GAAG,KAAK,CAAS,EAAE,uDAAI,KAAK,EAAE,OAAO,GAAG,CAAC;IAEzC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CACvC,EAAE,CACA,mEAAmE,EACnE,IAAI,CAAC,UAAU,EAAE,CAClB,iDACF,CAAC;uGARS,oBAAoB;2FAApB,oBAAoB;;2FAApB,oBAAoB;kBAPhC,SAAS;mBAAC;oBACT,QAAQ,EAAE,0BAA0B;oBACpC,IAAI,EAAE;wBACJ,WAAW,EAAE,sBAAsB;wBACnC,SAAS,EAAE,SAAS;qBACrB;iBACF","sourcesContent":["import { computed, Directive, input } from '@angular/core';\nimport { cn } from '../../utils';\n\n@Directive({\n selector: 'ul[scNavigationMenuGrid]',\n host: {\n 'data-slot': 'navigation-menu-grid',\n '[class]': 'class()',\n },\n})\nexport class ScNavigationMenuGrid {\n readonly classInput = input<string>('', { alias: 'class' });\n\n protected readonly class = computed(() =>\n cn(\n 'grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2 lg:w-[600px]',\n this.classInput(),\n ),\n );\n}\n"]}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
2
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
3
|
+
import { OverlayModule } from '@angular/cdk/overlay';
|
|
4
|
+
import { ChangeDetectionStrategy, Component, computed, contentChild, DestroyRef, inject, input, signal, ViewEncapsulation, } from '@angular/core';
|
|
5
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
+
import { NavigationStart, Router } from '@angular/router';
|
|
7
|
+
import { filter } from 'rxjs';
|
|
8
|
+
import { cn } from '../../utils';
|
|
9
|
+
import { ScNavigationMenu } from './navigation-menu';
|
|
10
|
+
import { ScNavigationMenuPortal } from './navigation-menu-portal';
|
|
11
|
+
import { ScNavigationMenuTrigger } from './navigation-menu-trigger';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
14
|
+
const position = {
|
|
15
|
+
originX: 'start',
|
|
16
|
+
originY: 'bottom',
|
|
17
|
+
overlayX: 'start',
|
|
18
|
+
overlayY: 'top',
|
|
19
|
+
offsetY: 4,
|
|
20
|
+
};
|
|
21
|
+
export class ScNavigationMenuItem {
|
|
22
|
+
navigationMenu = inject(ScNavigationMenu);
|
|
23
|
+
router = inject(Router);
|
|
24
|
+
destroyRef = inject(DestroyRef);
|
|
25
|
+
classInput = input('', { ...(ngDevMode ? { debugName: "classInput" } : {}), alias: 'class' });
|
|
26
|
+
itemId = inject(_IdGenerator).getId('sc-navigation-menu-item-');
|
|
27
|
+
/** Whether this item's content is open */
|
|
28
|
+
open = signal(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
|
|
29
|
+
triggerChild = contentChild(ScNavigationMenuTrigger, ...(ngDevMode ? [{ debugName: "triggerChild" }] : []));
|
|
30
|
+
navigationMenuPortal = contentChild(ScNavigationMenuPortal, ...(ngDevMode ? [{ debugName: "navigationMenuPortal" }] : []));
|
|
31
|
+
origin = computed(() => this.triggerChild()?.overlayOrigin, ...(ngDevMode ? [{ debugName: "origin" }] : []));
|
|
32
|
+
position = position;
|
|
33
|
+
class = computed(() => cn('block relative', this.classInput()), ...(ngDevMode ? [{ debugName: "class" }] : []));
|
|
34
|
+
hideTimeout = null;
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
// Close the menu when navigation starts
|
|
37
|
+
this.router.events
|
|
38
|
+
.pipe(filter((event) => event instanceof NavigationStart), takeUntilDestroyed(this.destroyRef))
|
|
39
|
+
.subscribe(() => {
|
|
40
|
+
this.open.set(false);
|
|
41
|
+
if (this.navigationMenu.activeItem() === this.itemId) {
|
|
42
|
+
this.navigationMenu.setActiveItem(null);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
onMouseEnter() {
|
|
47
|
+
this.cancelHide();
|
|
48
|
+
this.open.set(true);
|
|
49
|
+
this.navigationMenu.setActiveItem(this.itemId);
|
|
50
|
+
}
|
|
51
|
+
onMouseLeave() {
|
|
52
|
+
this.scheduleHide();
|
|
53
|
+
}
|
|
54
|
+
scheduleHide() {
|
|
55
|
+
this.cancelHide();
|
|
56
|
+
this.hideTimeout = setTimeout(() => {
|
|
57
|
+
this.open.set(false);
|
|
58
|
+
if (this.navigationMenu.activeItem() === this.itemId) {
|
|
59
|
+
this.navigationMenu.setActiveItem(null);
|
|
60
|
+
}
|
|
61
|
+
}, 100);
|
|
62
|
+
}
|
|
63
|
+
cancelHide() {
|
|
64
|
+
if (this.hideTimeout) {
|
|
65
|
+
clearTimeout(this.hideTimeout);
|
|
66
|
+
this.hideTimeout = null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNavigationMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
70
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: ScNavigationMenuItem, isStandalone: true, selector: "li[scNavigationMenuItem]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "navigation-menu-item" }, listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, properties: { "class": "class()" } }, queries: [{ propertyName: "triggerChild", first: true, predicate: ScNavigationMenuTrigger, descendants: true, isSignal: true }, { propertyName: "navigationMenuPortal", first: true, predicate: ScNavigationMenuPortal, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
71
|
+
<ng-content />
|
|
72
|
+
|
|
73
|
+
@if (origin(); as origin) {
|
|
74
|
+
<ng-template
|
|
75
|
+
cdkConnectedOverlay
|
|
76
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
77
|
+
[cdkConnectedOverlayOpen]="open()"
|
|
78
|
+
[cdkConnectedOverlayPositions]="[position]"
|
|
79
|
+
>
|
|
80
|
+
@if (navigationMenuPortal(); as portal) {
|
|
81
|
+
<ng-container [ngTemplateOutlet]="portal.templateRef" />
|
|
82
|
+
}
|
|
83
|
+
</ng-template>
|
|
84
|
+
}
|
|
85
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
86
|
+
}
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNavigationMenuItem, decorators: [{
|
|
88
|
+
type: Component,
|
|
89
|
+
args: [{
|
|
90
|
+
selector: 'li[scNavigationMenuItem]',
|
|
91
|
+
imports: [OverlayModule, NgTemplateOutlet],
|
|
92
|
+
template: `
|
|
93
|
+
<ng-content />
|
|
94
|
+
|
|
95
|
+
@if (origin(); as origin) {
|
|
96
|
+
<ng-template
|
|
97
|
+
cdkConnectedOverlay
|
|
98
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
99
|
+
[cdkConnectedOverlayOpen]="open()"
|
|
100
|
+
[cdkConnectedOverlayPositions]="[position]"
|
|
101
|
+
>
|
|
102
|
+
@if (navigationMenuPortal(); as portal) {
|
|
103
|
+
<ng-container [ngTemplateOutlet]="portal.templateRef" />
|
|
104
|
+
}
|
|
105
|
+
</ng-template>
|
|
106
|
+
}
|
|
107
|
+
`,
|
|
108
|
+
host: {
|
|
109
|
+
'data-slot': 'navigation-menu-item',
|
|
110
|
+
'[class]': 'class()',
|
|
111
|
+
'(mouseenter)': 'onMouseEnter()',
|
|
112
|
+
'(mouseleave)': 'onMouseLeave()',
|
|
113
|
+
},
|
|
114
|
+
encapsulation: ViewEncapsulation.None,
|
|
115
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
116
|
+
}]
|
|
117
|
+
}], propDecorators: { classInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], triggerChild: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ScNavigationMenuTrigger), { isSignal: true }] }], navigationMenuPortal: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ScNavigationMenuPortal), { isSignal: true }] }] } });
|
|
118
|
+
//# sourceMappingURL=navigation-menu-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-menu-item.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/navigation-menu/navigation-menu-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAqB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,MAAM,EACN,KAAK,EAEL,MAAM,EACN,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;;;AAEpE,MAAM,QAAQ,GAAsB;IAClC,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,CAAC;CACX,CAAC;AA8BF,MAAM,OAAO,oBAAoB;IACtB,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAClC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACxC,UAAU,GAAG,KAAK,CAAS,EAAE,uDAAI,KAAK,EAAE,OAAO,GAAG,CAAC;IAEnD,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEzE,0CAA0C;IACjC,IAAI,GAAG,MAAM,CAAU,KAAK,gDAAC,CAAC;IAEtB,YAAY,GAAG,YAAY,CAAC,uBAAuB,wDAAC,CAAC;IACnD,oBAAoB,GAAG,YAAY,CACpD,sBAAsB,gEACvB,CAAC;IAEO,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,kDAAC,CAAC;IAElD,QAAQ,GAAG,QAAQ,CAAC;IAEpB,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CACvC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,iDACxC,CAAC;IAEM,WAAW,GAAyC,IAAI,CAAC;IAEjE,QAAQ;QACN,wCAAwC;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM;aACf,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,eAAe,CAAC,EACnD,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CACpC;aACA,SAAS,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY;QACV,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;uGAlEU,oBAAoB;2FAApB,oBAAoB,8bAWc,uBAAuB,uGAElE,sBAAsB,gEAtCd;;;;;;;;;;;;;;;GAeT,2DAhBS,aAAa,0nCAAE,gBAAgB;;2FA0B9B,oBAAoB;kBA5BhC,SAAS;mBAAC;oBACT,QAAQ,EAAE,0BAA0B;oBACpC,OAAO,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC;oBAC1C,QAAQ,EAAE;;;;;;;;;;;;;;;GAeT;oBACD,IAAI,EAAE;wBACJ,WAAW,EAAE,sBAAsB;wBACnC,SAAS,EAAE,SAAS;wBACpB,cAAc,EAAE,gBAAgB;wBAChC,cAAc,EAAE,gBAAgB;qBACjC;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;gMAY8C,uBAAuB,sGAElE,sBAAsB","sourcesContent":["import { _IdGenerator } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ConnectedPosition, OverlayModule } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n inject,\n input,\n OnInit,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { cn } from '../../utils';\nimport { ScNavigationMenu } from './navigation-menu';\nimport { ScNavigationMenuPortal } from './navigation-menu-portal';\nimport { ScNavigationMenuTrigger } from './navigation-menu-trigger';\n\nconst position: ConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n};\n\n@Component({\n selector: 'li[scNavigationMenuItem]',\n imports: [OverlayModule, NgTemplateOutlet],\n template: `\n <ng-content />\n\n @if (origin(); as origin) {\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPositions]=\"[position]\"\n >\n @if (navigationMenuPortal(); as portal) {\n <ng-container [ngTemplateOutlet]=\"portal.templateRef\" />\n }\n </ng-template>\n }\n `,\n host: {\n 'data-slot': 'navigation-menu-item',\n '[class]': 'class()',\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNavigationMenuItem implements OnInit {\n readonly navigationMenu = inject(ScNavigationMenu);\n private readonly router = inject(Router);\n private readonly destroyRef = inject(DestroyRef);\n readonly classInput = input<string>('', { alias: 'class' });\n\n readonly itemId = inject(_IdGenerator).getId('sc-navigation-menu-item-');\n\n /** Whether this item's content is open */\n readonly open = signal<boolean>(false);\n\n private readonly triggerChild = contentChild(ScNavigationMenuTrigger);\n protected readonly navigationMenuPortal = contentChild(\n ScNavigationMenuPortal,\n );\n\n readonly origin = computed(() => this.triggerChild()?.overlayOrigin);\n\n protected readonly position = position;\n\n protected readonly class = computed(() =>\n cn('block relative', this.classInput()),\n );\n\n private hideTimeout: ReturnType<typeof setTimeout> | null = null;\n\n ngOnInit(): void {\n // Close the menu when navigation starts\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationStart),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n this.open.set(false);\n if (this.navigationMenu.activeItem() === this.itemId) {\n this.navigationMenu.setActiveItem(null);\n }\n });\n }\n\n onMouseEnter(): void {\n this.cancelHide();\n this.open.set(true);\n this.navigationMenu.setActiveItem(this.itemId);\n }\n\n onMouseLeave(): void {\n this.scheduleHide();\n }\n\n private scheduleHide(): void {\n this.cancelHide();\n this.hideTimeout = setTimeout(() => {\n this.open.set(false);\n if (this.navigationMenu.activeItem() === this.itemId) {\n this.navigationMenu.setActiveItem(null);\n }\n }, 100);\n }\n\n cancelHide(): void {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { computed, Directive, input } from '@angular/core';
|
|
2
|
+
import { cn } from '../../utils';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ScNavigationMenuLink {
|
|
5
|
+
classInput = input('', { ...(ngDevMode ? { debugName: "classInput" } : {}), alias: 'class' });
|
|
6
|
+
active = input(false, ...(ngDevMode ? [{ debugName: "active" }] : []));
|
|
7
|
+
class = computed(() => cn('data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground', 'hover:bg-accent hover:text-accent-foreground', 'focus:bg-accent focus:text-accent-foreground', 'focus-visible:ring-ring/50', '[&_svg:not([class*="text-"])]:text-muted-foreground', 'flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none', 'focus-visible:ring-[3px] focus-visible:outline-1', '[&_svg:not([class*="size-"])]:size-4', this.classInput()), ...(ngDevMode ? [{ debugName: "class" }] : []));
|
|
8
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNavigationMenuLink, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
9
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: ScNavigationMenuLink, isStandalone: true, selector: "a[scNavigationMenuLink]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "navigation-menu-link" }, properties: { "attr.data-active": "active()", "class": "class()" } }, ngImport: i0 });
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ScNavigationMenuLink, decorators: [{
|
|
12
|
+
type: Directive,
|
|
13
|
+
args: [{
|
|
14
|
+
selector: 'a[scNavigationMenuLink]',
|
|
15
|
+
host: {
|
|
16
|
+
'data-slot': 'navigation-menu-link',
|
|
17
|
+
'[attr.data-active]': 'active()',
|
|
18
|
+
'[class]': 'class()',
|
|
19
|
+
},
|
|
20
|
+
}]
|
|
21
|
+
}], propDecorators: { classInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }] } });
|
|
22
|
+
//# sourceMappingURL=navigation-menu-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-menu-link.js","sourceRoot":"","sources":["../../../../../../../libs/ui/src/lib/components/navigation-menu/navigation-menu-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;;AAUjC,MAAM,OAAO,oBAAoB;IACtB,UAAU,GAAG,KAAK,CAAS,EAAE,uDAAI,KAAK,EAAE,OAAO,GAAG,CAAC;IACnD,MAAM,GAAG,KAAK,CAAU,KAAK,kDAAC,CAAC;IAErB,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CACvC,EAAE,CACA,iJAAiJ,EACjJ,8CAA8C,EAC9C,8CAA8C,EAC9C,4BAA4B,EAC5B,qDAAqD,EACrD,wEAAwE,EACxE,kDAAkD,EAClD,sCAAsC,EACtC,IAAI,CAAC,UAAU,EAAE,CAClB,iDACF,CAAC;uGAhBS,oBAAoB;2FAApB,oBAAoB;;2FAApB,oBAAoB;kBARhC,SAAS;mBAAC;oBACT,QAAQ,EAAE,yBAAyB;oBACnC,IAAI,EAAE;wBACJ,WAAW,EAAE,sBAAsB;wBACnC,oBAAoB,EAAE,UAAU;wBAChC,SAAS,EAAE,SAAS;qBACrB;iBACF","sourcesContent":["import { computed, Directive, input } from '@angular/core';\nimport { cn } from '../../utils';\n\n@Directive({\n selector: 'a[scNavigationMenuLink]',\n host: {\n 'data-slot': 'navigation-menu-link',\n '[attr.data-active]': 'active()',\n '[class]': 'class()',\n },\n})\nexport class ScNavigationMenuLink {\n readonly classInput = input<string>('', { alias: 'class' });\n readonly active = input<boolean>(false);\n\n protected readonly class = computed(() =>\n cn(\n 'data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground',\n 'hover:bg-accent hover:text-accent-foreground',\n 'focus:bg-accent focus:text-accent-foreground',\n 'focus-visible:ring-ring/50',\n '[&_svg:not([class*=\"text-\"])]:text-muted-foreground',\n 'flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none',\n 'focus-visible:ring-[3px] focus-visible:outline-1',\n '[&_svg:not([class*=\"size-\"])]:size-4',\n this.classInput(),\n ),\n );\n}\n"]}
|