@educarehq/solaris-ui 0.2.0 → 0.3.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/index.js +40 -1
- package/esm2022/index.js.map +1 -1
- package/esm2022/lib/components/actions/button/index.js +3 -0
- package/esm2022/lib/components/actions/button/index.js.map +1 -0
- package/esm2022/lib/components/data-display/badge/index.js +3 -0
- package/esm2022/lib/components/data-display/badge/index.js.map +1 -0
- package/esm2022/lib/components/data-display/divider/component/divider.component.js +46 -0
- package/esm2022/lib/components/data-display/divider/component/divider.component.js.map +1 -0
- package/esm2022/lib/components/data-display/divider/index.js +2 -0
- package/esm2022/lib/components/data-display/divider/index.js.map +1 -0
- package/esm2022/lib/components/data-display/divider/model/divider.types.js +1 -0
- package/esm2022/lib/components/data-display/divider/model/divider.types.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/component/toast.component.js +268 -0
- package/esm2022/lib/components/feedback/toast/component/toast.component.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/container/toast-container.component.js +24 -0
- package/esm2022/lib/components/feedback/toast/container/toast-container.component.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/model/toast.types.js +1 -0
- package/esm2022/lib/components/feedback/toast/model/toast.types.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/provider/provide-solaris-toast.js +17 -0
- package/esm2022/lib/components/feedback/toast/provider/provide-solaris-toast.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/service/toast.service.js +219 -0
- package/esm2022/lib/components/feedback/toast/service/toast.service.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/token/toast.tokens.js +13 -0
- package/esm2022/lib/components/feedback/toast/token/toast.tokens.js.map +1 -0
- package/esm2022/lib/components/forms/email-field/component/email-field.component.js +5 -4
- package/esm2022/lib/components/forms/email-field/component/email-field.component.js.map +1 -1
- package/esm2022/lib/components/forms/form-field/component/form-field.component.js +50 -2
- package/esm2022/lib/components/forms/form-field/component/form-field.component.js.map +1 -1
- package/esm2022/lib/components/forms/form-field/directives/form-field-trigger.directive.js.map +1 -1
- package/esm2022/lib/components/forms/form-field/index.js.map +1 -1
- package/esm2022/lib/components/forms/multi-select/component/multi-select.component.js +11 -28
- package/esm2022/lib/components/forms/multi-select/component/multi-select.component.js.map +1 -1
- package/esm2022/lib/components/forms/multi-select/model/multi-select.types.js.map +1 -1
- package/esm2022/lib/components/forms/option/component/option.component.js +2 -2
- package/esm2022/lib/components/forms/option/component/option.component.js.map +1 -1
- package/esm2022/lib/components/forms/password-field/component/password-field.component.js +2 -2
- package/esm2022/lib/components/forms/password-field/component/password-field.component.js.map +1 -1
- package/esm2022/lib/components/forms/radio/component/radio.component.js +2 -2
- package/esm2022/lib/components/forms/select/component/select.component.js +4 -8
- package/esm2022/lib/components/forms/select/component/select.component.js.map +1 -1
- package/esm2022/lib/components/icon/component/solaris-icon.component.js +2 -2
- package/esm2022/lib/components/icon/component/solaris-icon.component.js.map +1 -1
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.js +27 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.js +96 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.js +22 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.js +105 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.js +95 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.js +631 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.js +365 -0
- package/esm2022/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/index.js +8 -0
- package/esm2022/lib/components/interaction/dropdown-menu/index.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.js +3 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.js +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.js +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.js.map +1 -0
- package/esm2022/lib/components/interaction/popover/component/popover-panel.component.js +2 -2
- package/esm2022/lib/components/interaction/popover/component/popover-panel.component.js.map +1 -1
- package/esm2022/lib/components/interaction/popover/directives/popover-trigger.directive.js +28 -20
- package/esm2022/lib/components/interaction/popover/directives/popover-trigger.directive.js.map +1 -1
- package/esm2022/lib/components/interaction/tooltip/component/tooltip-panel.component.js.map +1 -1
- package/esm2022/lib/components/interaction/tooltip/directive/tooltip.directive.js.map +1 -1
- package/esm2022/lib/components/interaction/tooltip/model/tooltip-position.js.map +1 -1
- package/esm2022/lib/components/navigation/editable-tabs/component/editable-tabs.component.js +323 -0
- package/esm2022/lib/components/navigation/editable-tabs/component/editable-tabs.component.js.map +1 -0
- package/esm2022/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.js +34 -0
- package/esm2022/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.js.map +1 -0
- package/esm2022/lib/components/navigation/editable-tabs/model/editable-tabs.types.js +1 -0
- package/esm2022/lib/components/navigation/editable-tabs/model/editable-tabs.types.js.map +1 -0
- package/esm2022/lib/components/navigation/segmented-control/component/segmented-control.component.js +242 -0
- package/esm2022/lib/components/navigation/segmented-control/component/segmented-control.component.js.map +1 -0
- package/esm2022/lib/components/navigation/segmented-control/item/segmented-item.component.js +197 -0
- package/esm2022/lib/components/navigation/segmented-control/item/segmented-item.component.js.map +1 -0
- package/esm2022/lib/components/navigation/segmented-control/model/segmented-control.types.js +1 -0
- package/esm2022/lib/components/navigation/segmented-control/model/segmented-control.types.js.map +1 -0
- package/esm2022/lib/components/navigation/segmented-control/token/segmented-control.tokens.js +3 -0
- package/esm2022/lib/components/navigation/segmented-control/token/segmented-control.tokens.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/actions/stepper-actions.component.js +15 -0
- package/esm2022/lib/components/navigation/stepper/actions/stepper-actions.component.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/component/stepper.component.js +99 -0
- package/esm2022/lib/components/navigation/stepper/component/stepper.component.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/content/stepper-content.component.js +13 -0
- package/esm2022/lib/components/navigation/stepper/content/stepper-content.component.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/model/stepper.types.js +1 -0
- package/esm2022/lib/components/navigation/stepper/model/stepper.types.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/step/step.component.js +91 -0
- package/esm2022/lib/components/navigation/stepper/step/step.component.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/token/stepper.tokens.js +3 -0
- package/esm2022/lib/components/navigation/stepper/token/stepper.tokens.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/component/tabs.component.js +169 -0
- package/esm2022/lib/components/navigation/tabs/component/tabs.component.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/index.js +5 -0
- package/esm2022/lib/components/navigation/tabs/index.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/model/tabs.types.js +1 -0
- package/esm2022/lib/components/navigation/tabs/model/tabs.types.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/tab/tab.component.js +195 -0
- package/esm2022/lib/components/navigation/tabs/tab/tab.component.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/tab-panel/tab-panel.component.js +55 -0
- package/esm2022/lib/components/navigation/tabs/tab-panel/tab-panel.component.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/token/tabs.tokens.js +3 -0
- package/esm2022/lib/components/navigation/tabs/token/tabs.tokens.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/component/dialog.component.js +49 -0
- package/esm2022/lib/components/overlay/dialog/component/dialog.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-actions.component.js +37 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-actions.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-content.component.js +13 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-content.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-header.component.js +32 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-header.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/container/dialog-container.component.js +142 -0
- package/esm2022/lib/components/overlay/dialog/container/dialog-container.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/flow/dialog-flow.component.js +56 -0
- package/esm2022/lib/components/overlay/dialog/flow/dialog-flow.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/flow/dialog-step.component.js +20 -0
- package/esm2022/lib/components/overlay/dialog/flow/dialog-step.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/model/dialog.types.js +1 -0
- package/esm2022/lib/components/overlay/dialog/model/dialog.types.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/provider/provide-solaris-dialog.js +13 -0
- package/esm2022/lib/components/overlay/dialog/provider/provide-solaris-dialog.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/service/dialog-ref.js +23 -0
- package/esm2022/lib/components/overlay/dialog/service/dialog-ref.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/service/dialog.service.js +111 -0
- package/esm2022/lib/components/overlay/dialog/service/dialog.service.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/token/dialog-data.token.js +4 -0
- package/esm2022/lib/components/overlay/dialog/token/dialog-data.token.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/token/dialog.tokens.js +15 -0
- package/esm2022/lib/components/overlay/dialog/token/dialog.tokens.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/actions.js +242 -0
- package/esm2022/lib/services/icon/icons/groups/actions.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/data.js +129 -0
- package/esm2022/lib/services/icon/icons/groups/data.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/layout.js +50 -0
- package/esm2022/lib/services/icon/icons/groups/layout.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/navigation.js +354 -0
- package/esm2022/lib/services/icon/icons/groups/navigation.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/status.js +70 -0
- package/esm2022/lib/services/icon/icons/groups/status.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/theme.js +49 -0
- package/esm2022/lib/services/icon/icons/groups/theme.js.map +1 -0
- package/esm2022/lib/services/icon/icons/solaris-built-in-icons.js +12 -204
- package/esm2022/lib/services/icon/icons/solaris-built-in-icons.js.map +1 -1
- package/esm2022/lib/services/icon/model/solaris-icon-definition.interface.js.map +1 -1
- package/esm2022/lib/services/icon/model/solaris-icon.types.js.map +1 -1
- package/esm2022/lib/services/translation/model/solaris-translate-defaults.js +56 -0
- package/esm2022/lib/services/translation/model/solaris-translate-defaults.js.map +1 -1
- package/index.d.ts +92 -1
- package/lib/components/actions/button/index.d.ts +3 -0
- package/lib/components/data-display/badge/index.d.ts +3 -0
- package/lib/components/data-display/divider/component/divider.component.d.ts +17 -0
- package/lib/components/data-display/divider/index.d.ts +2 -0
- package/lib/components/data-display/divider/model/divider.types.d.ts +5 -0
- package/lib/components/feedback/toast/component/toast.component.d.ts +62 -0
- package/lib/components/feedback/toast/container/toast-container.component.d.ts +10 -0
- package/lib/components/feedback/toast/model/toast.types.d.ts +106 -0
- package/lib/components/feedback/toast/provider/provide-solaris-toast.d.ts +3 -0
- package/lib/components/feedback/toast/service/toast.service.d.ts +36 -0
- package/lib/components/feedback/toast/token/toast.tokens.d.ts +5 -0
- package/lib/components/forms/email-field/component/email-field.component.d.ts +2 -1
- package/lib/components/forms/form-field/component/form-field.component.d.ts +6 -0
- package/lib/components/forms/multi-select/component/multi-select.component.d.ts +4 -7
- package/lib/components/forms/select/component/select.component.d.ts +2 -2
- package/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.d.ts +10 -0
- package/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.d.ts +28 -0
- package/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.d.ts +7 -0
- package/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.d.ts +21 -0
- package/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.d.ts +21 -0
- package/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.d.ts +68 -0
- package/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.d.ts +61 -0
- package/lib/components/interaction/dropdown-menu/index.d.ts +9 -0
- package/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.d.ts +8 -0
- package/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.d.ts +11 -0
- package/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.d.ts +2 -0
- package/lib/components/navigation/editable-tabs/component/editable-tabs.component.d.ts +69 -0
- package/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.d.ts +20 -0
- package/lib/components/navigation/editable-tabs/model/editable-tabs.types.d.ts +60 -0
- package/lib/components/navigation/segmented-control/component/segmented-control.component.d.ts +64 -0
- package/lib/components/navigation/segmented-control/item/segmented-item.component.d.ts +35 -0
- package/lib/components/navigation/segmented-control/model/segmented-control.types.d.ts +12 -0
- package/lib/components/navigation/segmented-control/token/segmented-control.tokens.d.ts +22 -0
- package/lib/components/navigation/stepper/actions/stepper-actions.component.d.ts +7 -0
- package/lib/components/navigation/stepper/component/stepper.component.d.ts +36 -0
- package/lib/components/navigation/stepper/content/stepper-content.component.d.ts +5 -0
- package/lib/components/navigation/stepper/model/stepper.types.d.ts +15 -0
- package/lib/components/navigation/stepper/step/step.component.d.ts +27 -0
- package/lib/components/navigation/stepper/token/stepper.tokens.d.ts +13 -0
- package/lib/components/navigation/tabs/component/tabs.component.d.ts +47 -0
- package/lib/components/navigation/tabs/index.d.ts +6 -0
- package/lib/components/navigation/tabs/model/tabs.types.d.ts +17 -0
- package/lib/components/navigation/tabs/tab/tab.component.d.ts +38 -0
- package/lib/components/navigation/tabs/tab-panel/tab-panel.component.d.ts +15 -0
- package/lib/components/navigation/tabs/token/tabs.tokens.d.ts +19 -0
- package/lib/components/overlay/dialog/component/dialog.component.d.ts +29 -0
- package/lib/components/overlay/dialog/components/dialog-actions.component.d.ts +12 -0
- package/lib/components/overlay/dialog/components/dialog-content.component.d.ts +5 -0
- package/lib/components/overlay/dialog/components/dialog-header.component.d.ts +19 -0
- package/lib/components/overlay/dialog/container/dialog-container.component.d.ts +32 -0
- package/lib/components/overlay/dialog/flow/dialog-flow.component.d.ts +19 -0
- package/lib/components/overlay/dialog/flow/dialog-step.component.d.ts +7 -0
- package/lib/components/overlay/dialog/model/dialog.types.d.ts +87 -0
- package/lib/components/overlay/dialog/provider/provide-solaris-dialog.d.ts +3 -0
- package/lib/components/overlay/dialog/service/dialog-ref.d.ts +11 -0
- package/lib/components/overlay/dialog/service/dialog.service.d.ts +20 -0
- package/lib/components/overlay/dialog/token/dialog-data.token.d.ts +4 -0
- package/lib/components/overlay/dialog/token/dialog.tokens.d.ts +4 -0
- package/lib/services/icon/icons/groups/actions.d.ts +2 -0
- package/lib/services/icon/icons/groups/data.d.ts +2 -0
- package/lib/services/icon/icons/groups/layout.d.ts +2 -0
- package/lib/services/icon/icons/groups/navigation.d.ts +2 -0
- package/lib/services/icon/icons/groups/status.d.ts +2 -0
- package/lib/services/icon/icons/groups/theme.d.ts +2 -0
- package/lib/services/icon/model/solaris-icon-definition.interface.d.ts +10 -1
- package/lib/services/icon/model/solaris-icon.types.d.ts +1 -1
- package/package.json +1 -1
- package/styles/_dropdown-menu.scss +72 -0
- package/styles/_popover.scss +24 -19
- package/styles/_toast.scss +9 -0
- package/styles/_tooltip.scss +3 -3
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Component, input, contentChildren, signal, computed, viewChild, TemplateRef, } from '@angular/core';
|
|
2
|
+
import { SOLARIS_DROPDOWN_NAVIGABLE_ITEM, } from '../model/dropdown-menu-navigation';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
let nextId = 0;
|
|
5
|
+
export class SolarisDropdownMenuComponent {
|
|
6
|
+
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
7
|
+
density = input('comfortable', ...(ngDevMode ? [{ debugName: "density" }] : /* istanbul ignore next */ []));
|
|
8
|
+
navigableItems = contentChildren(SOLARIS_DROPDOWN_NAVIGABLE_ITEM, ...(ngDevMode ? [{ debugName: "navigableItems" }] : /* istanbul ignore next */ []));
|
|
9
|
+
contentTemplate = viewChild.required('contentTmpl', {
|
|
10
|
+
read: TemplateRef,
|
|
11
|
+
});
|
|
12
|
+
panelId = `solaris-dropdown-menu-${++nextId}`;
|
|
13
|
+
focusedIndex = signal(-1, ...(ngDevMode ? [{ debugName: "focusedIndex" }] : /* istanbul ignore next */ []));
|
|
14
|
+
enabledNavigableItems = computed(() => {
|
|
15
|
+
return this.navigableItems().filter((item) => !item.disabled());
|
|
16
|
+
}, ...(ngDevMode ? [{ debugName: "enabledNavigableItems" }] : /* istanbul ignore next */ []));
|
|
17
|
+
focusFirstItem() {
|
|
18
|
+
const enabled = this.enabledNavigableItems();
|
|
19
|
+
if (enabled.length > 0) {
|
|
20
|
+
const idx = this.navigableItems().indexOf(enabled[0]);
|
|
21
|
+
this.focusedIndex.set(idx);
|
|
22
|
+
enabled[0].focus();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
focusLastItem() {
|
|
26
|
+
const enabled = this.enabledNavigableItems();
|
|
27
|
+
const last = enabled.at(-1);
|
|
28
|
+
if (last) {
|
|
29
|
+
const idx = this.navigableItems().indexOf(last);
|
|
30
|
+
this.focusedIndex.set(idx);
|
|
31
|
+
last.focus();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
focusNextItem() {
|
|
35
|
+
const items = this.navigableItems();
|
|
36
|
+
const enabled = this.enabledNavigableItems();
|
|
37
|
+
if (enabled.length === 0)
|
|
38
|
+
return;
|
|
39
|
+
const currentFocused = this.focusedIndex();
|
|
40
|
+
const currentFocusedItem = currentFocused >= 0 ? items[currentFocused] : null;
|
|
41
|
+
let currentEnabledIndex = -1;
|
|
42
|
+
if (currentFocusedItem) {
|
|
43
|
+
currentEnabledIndex = enabled.indexOf(currentFocusedItem);
|
|
44
|
+
}
|
|
45
|
+
const nextEnabledIndex = (currentEnabledIndex + 1) % enabled.length;
|
|
46
|
+
const nextItem = enabled[nextEnabledIndex];
|
|
47
|
+
const nextItemIndex = items.indexOf(nextItem);
|
|
48
|
+
this.focusedIndex.set(nextItemIndex);
|
|
49
|
+
nextItem.focus();
|
|
50
|
+
}
|
|
51
|
+
focusPreviousItem() {
|
|
52
|
+
const items = this.navigableItems();
|
|
53
|
+
const enabled = this.enabledNavigableItems();
|
|
54
|
+
if (enabled.length === 0)
|
|
55
|
+
return;
|
|
56
|
+
const currentFocused = this.focusedIndex();
|
|
57
|
+
const currentFocusedItem = currentFocused >= 0 ? items[currentFocused] : null;
|
|
58
|
+
let currentEnabledIndex = -1;
|
|
59
|
+
if (currentFocusedItem) {
|
|
60
|
+
currentEnabledIndex = enabled.indexOf(currentFocusedItem);
|
|
61
|
+
}
|
|
62
|
+
const prevEnabledIndex = currentEnabledIndex <= 0 ? enabled.length - 1 : currentEnabledIndex - 1;
|
|
63
|
+
const prevItem = enabled[prevEnabledIndex];
|
|
64
|
+
const prevItemIndex = items.indexOf(prevItem);
|
|
65
|
+
this.focusedIndex.set(prevItemIndex);
|
|
66
|
+
prevItem.focus();
|
|
67
|
+
}
|
|
68
|
+
focusItemByLabel(label) {
|
|
69
|
+
const enabled = this.enabledNavigableItems();
|
|
70
|
+
const lowerLabel = label.toLowerCase();
|
|
71
|
+
const match = enabled.find((item) => {
|
|
72
|
+
const itemLabel = item.label();
|
|
73
|
+
return itemLabel?.toLowerCase().startsWith(lowerLabel);
|
|
74
|
+
});
|
|
75
|
+
if (match) {
|
|
76
|
+
const idx = this.navigableItems().indexOf(match);
|
|
77
|
+
this.focusedIndex.set(idx);
|
|
78
|
+
match.focus();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
activateFocusedItem() {
|
|
82
|
+
const items = this.navigableItems();
|
|
83
|
+
const idx = this.focusedIndex();
|
|
84
|
+
if (idx >= 0 && idx < items.length) {
|
|
85
|
+
const item = items[idx];
|
|
86
|
+
if (!item.disabled()) {
|
|
87
|
+
item.handleClick();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
92
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.17", type: SolarisDropdownMenuComponent, isStandalone: true, selector: "solaris-dropdown-menu", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "panelId", "attr.role": "\"menu\"", "attr.data-size": "size()", "attr.data-density": "density()" } }, queries: [{ propertyName: "navigableItems", predicate: SOLARIS_DROPDOWN_NAVIGABLE_ITEM, isSignal: true }], viewQueries: [{ propertyName: "contentTemplate", first: true, predicate: ["contentTmpl"], descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<ng-template #contentTmpl>\n <div class=\"solaris-dropdown-menu__wrapper\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{--solaris-dropdown-menu-min-width: calc( var(--solaris-spacing-24) + var(--solaris-spacing-10) + var(--solaris-spacing-1) );--solaris-dropdown-menu-max-width: calc( var(--solaris-spacing-24) * 2 + var(--solaris-spacing-10) + var(--solaris-spacing-2) );display:none}.solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-gap: var(--solaris-spacing-1);--solaris-dropdown-menu-padding: var(--solaris-spacing-2);display:flex;outline:none;-webkit-user-select:none;user-select:none;flex-direction:column;box-sizing:border-box;gap:var(--solaris-dropdown-menu-gap);padding:var(--solaris-dropdown-menu-padding);min-width:var(--solaris-dropdown-menu-min-width);max-width:var(--solaris-dropdown-menu-max-width)}.solaris-dropdown-menu__wrapper ::ng-deep solaris-divider{margin-inline:calc(-1 * var(--solaris-dropdown-menu-padding));width:calc(100% + 2 * var(--solaris-dropdown-menu-padding))}::ng-deep solaris-dropdown-menu-group{display:flex;flex-direction:column;padding-block:var(--solaris-spacing-1)}::ng-deep solaris-dropdown-menu-group:first-child{padding-block-start:0}::ng-deep solaris-dropdown-menu-group:last-child{padding-block-end:0}::ng-deep solaris-dropdown-menu-label{display:flex;cursor:default;-webkit-user-select:none;user-select:none;align-items:center;letter-spacing:.05em;text-transform:uppercase;color:var(--solaris-text-muted);font-weight:var(--solaris-font-weight-semibold);font-size:var(--solaris-font-size-xs);line-height:var(--solaris-line-height-xs);padding:var(--solaris-spacing-2) var(--solaris-spacing-3)}[data-size=sm] .solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-min-width: calc( var(--solaris-dropdown-menu-min-width) - var(--solaris-spacing-5) );--solaris-dropdown-menu-max-width: calc( var(--solaris-dropdown-menu-max-width) - var(--solaris-spacing-5) )}[data-size=lg] .solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-min-width: calc( var(--solaris-dropdown-menu-min-width) + var(--solaris-spacing-5) );--solaris-dropdown-menu-max-width: calc( var(--solaris-dropdown-menu-max-width) + var(--solaris-spacing-5) )}\n"] });
|
|
93
|
+
}
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownMenuComponent, decorators: [{
|
|
95
|
+
type: Component,
|
|
96
|
+
args: [{ selector: 'solaris-dropdown-menu', standalone: true, host: {
|
|
97
|
+
'[id]': 'panelId',
|
|
98
|
+
'[attr.role]': '"menu"',
|
|
99
|
+
'[attr.data-size]': 'size()',
|
|
100
|
+
'[attr.data-density]': 'density()',
|
|
101
|
+
}, template: "<ng-template #contentTmpl>\n <div class=\"solaris-dropdown-menu__wrapper\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{--solaris-dropdown-menu-min-width: calc( var(--solaris-spacing-24) + var(--solaris-spacing-10) + var(--solaris-spacing-1) );--solaris-dropdown-menu-max-width: calc( var(--solaris-spacing-24) * 2 + var(--solaris-spacing-10) + var(--solaris-spacing-2) );display:none}.solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-gap: var(--solaris-spacing-1);--solaris-dropdown-menu-padding: var(--solaris-spacing-2);display:flex;outline:none;-webkit-user-select:none;user-select:none;flex-direction:column;box-sizing:border-box;gap:var(--solaris-dropdown-menu-gap);padding:var(--solaris-dropdown-menu-padding);min-width:var(--solaris-dropdown-menu-min-width);max-width:var(--solaris-dropdown-menu-max-width)}.solaris-dropdown-menu__wrapper ::ng-deep solaris-divider{margin-inline:calc(-1 * var(--solaris-dropdown-menu-padding));width:calc(100% + 2 * var(--solaris-dropdown-menu-padding))}::ng-deep solaris-dropdown-menu-group{display:flex;flex-direction:column;padding-block:var(--solaris-spacing-1)}::ng-deep solaris-dropdown-menu-group:first-child{padding-block-start:0}::ng-deep solaris-dropdown-menu-group:last-child{padding-block-end:0}::ng-deep solaris-dropdown-menu-label{display:flex;cursor:default;-webkit-user-select:none;user-select:none;align-items:center;letter-spacing:.05em;text-transform:uppercase;color:var(--solaris-text-muted);font-weight:var(--solaris-font-weight-semibold);font-size:var(--solaris-font-size-xs);line-height:var(--solaris-line-height-xs);padding:var(--solaris-spacing-2) var(--solaris-spacing-3)}[data-size=sm] .solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-min-width: calc( var(--solaris-dropdown-menu-min-width) - var(--solaris-spacing-5) );--solaris-dropdown-menu-max-width: calc( var(--solaris-dropdown-menu-max-width) - var(--solaris-spacing-5) )}[data-size=lg] .solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-min-width: calc( var(--solaris-dropdown-menu-min-width) + var(--solaris-spacing-5) );--solaris-dropdown-menu-max-width: calc( var(--solaris-dropdown-menu-max-width) + var(--solaris-spacing-5) )}\n"] }]
|
|
102
|
+
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], navigableItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SOLARIS_DROPDOWN_NAVIGABLE_ITEM), { isSignal: true }] }], contentTemplate: [{ type: i0.ViewChild, args: ['contentTmpl', { ...{
|
|
103
|
+
read: TemplateRef,
|
|
104
|
+
}, isSignal: true }] }] } });
|
|
105
|
+
//# sourceMappingURL=dropdown-menu.component.js.map
|
package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-menu.component.js","sourceRoot":"","sources":["../../../../../../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.ts","../../../../../../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n input,\n contentChildren,\n signal,\n computed,\n viewChild,\n TemplateRef,\n} from '@angular/core';\n\nimport {\n SOLARIS_DROPDOWN_NAVIGABLE_ITEM,\n type SolarisDropdownNavigableItem,\n} from '../model/dropdown-menu-navigation';\n\nimport type {\n SolarisDropdownMenuSize,\n SolarisDropdownMenuDensity,\n} from '../model/dropdown-menu.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'solaris-dropdown-menu',\n standalone: true,\n templateUrl: './dropdown-menu.component.html',\n styleUrls: ['./dropdown-menu.component.scss'],\n host: {\n '[id]': 'panelId',\n '[attr.role]': '\"menu\"',\n '[attr.data-size]': 'size()',\n '[attr.data-density]': 'density()',\n },\n})\nexport class SolarisDropdownMenuComponent {\n readonly size = input<SolarisDropdownMenuSize>('md');\n readonly density = input<SolarisDropdownMenuDensity>('comfortable');\n\n readonly navigableItems = contentChildren<SolarisDropdownNavigableItem>(\n SOLARIS_DROPDOWN_NAVIGABLE_ITEM,\n );\n\n readonly contentTemplate = viewChild.required('contentTmpl', {\n read: TemplateRef,\n });\n\n readonly panelId = `solaris-dropdown-menu-${++nextId}`;\n\n readonly focusedIndex = signal(-1);\n\n readonly enabledNavigableItems = computed(() => {\n return this.navigableItems().filter((item) => !item.disabled());\n });\n\n focusFirstItem(): void {\n const enabled = this.enabledNavigableItems();\n if (enabled.length > 0) {\n const idx = this.navigableItems().indexOf(enabled[0]);\n this.focusedIndex.set(idx);\n enabled[0].focus();\n }\n }\n\n focusLastItem(): void {\n const enabled = this.enabledNavigableItems();\n const last = enabled.at(-1);\n if (last) {\n const idx = this.navigableItems().indexOf(last);\n this.focusedIndex.set(idx);\n last.focus();\n }\n }\n\n focusNextItem(): void {\n const items = this.navigableItems();\n const enabled = this.enabledNavigableItems();\n if (enabled.length === 0) return;\n\n const currentFocused = this.focusedIndex();\n const currentFocusedItem =\n currentFocused >= 0 ? items[currentFocused] : null;\n\n let currentEnabledIndex = -1;\n if (currentFocusedItem) {\n currentEnabledIndex = enabled.indexOf(currentFocusedItem);\n }\n\n const nextEnabledIndex = (currentEnabledIndex + 1) % enabled.length;\n const nextItem = enabled[nextEnabledIndex];\n const nextItemIndex = items.indexOf(nextItem);\n this.focusedIndex.set(nextItemIndex);\n nextItem.focus();\n }\n\n focusPreviousItem(): void {\n const items = this.navigableItems();\n const enabled = this.enabledNavigableItems();\n if (enabled.length === 0) return;\n\n const currentFocused = this.focusedIndex();\n const currentFocusedItem =\n currentFocused >= 0 ? items[currentFocused] : null;\n\n let currentEnabledIndex = -1;\n if (currentFocusedItem) {\n currentEnabledIndex = enabled.indexOf(currentFocusedItem);\n }\n\n const prevEnabledIndex =\n currentEnabledIndex <= 0 ? enabled.length - 1 : currentEnabledIndex - 1;\n const prevItem = enabled[prevEnabledIndex];\n const prevItemIndex = items.indexOf(prevItem);\n this.focusedIndex.set(prevItemIndex);\n prevItem.focus();\n }\n\n focusItemByLabel(label: string): void {\n const enabled = this.enabledNavigableItems();\n const lowerLabel = label.toLowerCase();\n const match = enabled.find((item) => {\n const itemLabel = item.label();\n return itemLabel?.toLowerCase().startsWith(lowerLabel);\n });\n if (match) {\n const idx = this.navigableItems().indexOf(match);\n this.focusedIndex.set(idx);\n match.focus();\n }\n }\n\n activateFocusedItem(): void {\n const items = this.navigableItems();\n const idx = this.focusedIndex();\n if (idx >= 0 && idx < items.length) {\n const item = items[idx];\n if (!item.disabled()) {\n item.handleClick();\n }\n }\n }\n}\n","<ng-template #contentTmpl>\n <div class=\"solaris-dropdown-menu__wrapper\">\n <ng-content />\n </div>\n</ng-template>\n"]}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Component, ElementRef, HostListener, inject, input, computed, forwardRef, } from '@angular/core';
|
|
2
|
+
import { SolarisIconComponent } from '../../../icon';
|
|
3
|
+
import { SOLARIS_DROPDOWN_NAVIGABLE_ITEM } from '../model/dropdown-menu-navigation';
|
|
4
|
+
import { SolarisDropdownSubmenuComponent } from './dropdown-submenu.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class SolarisDropdownSubmenuTriggerComponent {
|
|
7
|
+
elementRef = inject(ElementRef);
|
|
8
|
+
submenu = inject(SolarisDropdownSubmenuComponent, {
|
|
9
|
+
optional: true,
|
|
10
|
+
});
|
|
11
|
+
icon = input(undefined, ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
12
|
+
label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
13
|
+
labelKey = input(undefined, ...(ngDevMode ? [{ debugName: "labelKey" }] : /* istanbul ignore next */ []));
|
|
14
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
15
|
+
color = input('neutral', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
16
|
+
isSubmenuOpen = computed(() => {
|
|
17
|
+
return this.submenu?.isOpen() ?? false;
|
|
18
|
+
}, ...(ngDevMode ? [{ debugName: "isSubmenuOpen" }] : /* istanbul ignore next */ []));
|
|
19
|
+
submenuPanelId = computed(() => {
|
|
20
|
+
return this.submenu?.nestedMenuPanelId() ?? null;
|
|
21
|
+
}, ...(ngDevMode ? [{ debugName: "submenuPanelId" }] : /* istanbul ignore next */ []));
|
|
22
|
+
hasLeadingContent = computed(() => !!this.icon(), ...(ngDevMode ? [{ debugName: "hasLeadingContent" }] : /* istanbul ignore next */ []));
|
|
23
|
+
handleClick() {
|
|
24
|
+
if (this.disabled())
|
|
25
|
+
return;
|
|
26
|
+
this.submenu?.toggle();
|
|
27
|
+
}
|
|
28
|
+
onMouseEnter() {
|
|
29
|
+
if (this.disabled())
|
|
30
|
+
return;
|
|
31
|
+
this.submenu?.onTriggerHover();
|
|
32
|
+
}
|
|
33
|
+
onMouseLeave() {
|
|
34
|
+
if (this.disabled())
|
|
35
|
+
return;
|
|
36
|
+
this.submenu?.onTriggerLeave();
|
|
37
|
+
}
|
|
38
|
+
onKeydown(event) {
|
|
39
|
+
if (this.disabled())
|
|
40
|
+
return;
|
|
41
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
42
|
+
event.preventDefault();
|
|
43
|
+
event.stopPropagation();
|
|
44
|
+
this.submenu?.toggle();
|
|
45
|
+
}
|
|
46
|
+
else if (event.key === 'ArrowRight') {
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
event.stopPropagation();
|
|
49
|
+
this.submenu?.open();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
focus() {
|
|
53
|
+
// SECURITY_EXCEPTION: nativeElement.focus() required for programmatic focus. No alternative exists.
|
|
54
|
+
this.elementRef.nativeElement.focus();
|
|
55
|
+
}
|
|
56
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownSubmenuTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SolarisDropdownSubmenuTriggerComponent, isStandalone: true, selector: "solaris-dropdown-submenu-trigger", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelKey: { classPropertyName: "labelKey", publicName: "labelKey", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "keydown": "onKeydown($event)" }, properties: { "attr.role": "\"menuitem\"", "attr.data-color": "color()", "attr.aria-haspopup": "\"menu\"", "attr.aria-controls": "submenuPanelId()", "attr.tabindex": "disabled() ? \"-1\" : \"0\"", "attr.data-disabled": "disabled() ? \"\" : null", "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.aria-expanded": "isSubmenuOpen() ? \"true\" : \"false\"" }, classAttribute: "solaris-dropdown-submenu-trigger" }, providers: [
|
|
58
|
+
{
|
|
59
|
+
provide: SOLARIS_DROPDOWN_NAVIGABLE_ITEM,
|
|
60
|
+
useExisting: forwardRef(() => SolarisDropdownSubmenuTriggerComponent),
|
|
61
|
+
},
|
|
62
|
+
], ngImport: i0, template: "<div class=\"solaris-dropdown-submenu-trigger__wrapper\">\n @if (hasLeadingContent()) {\n <div class=\"solaris-dropdown-submenu-trigger__leading\">\n <solaris-icon [name]=\"icon()!\" aria-hidden=\"true\" />\n </div>\n }\n <div class=\"solaris-dropdown-submenu-trigger__content\">\n <ng-content></ng-content>\n @if (label()) {\n <span class=\"solaris-dropdown-submenu-trigger__label\">{{ label() }}</span>\n }\n </div>\n <div class=\"solaris-dropdown-submenu-trigger__trailing\">\n <solaris-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </div>\n</div>\n", styles: [":host{--solaris-dropdown-submenu-trigger-gap: var(--solaris-spacing-2);--solaris-dropdown-submenu-trigger-radius: var(--solaris-radius-sm);--solaris-dropdown-submenu-trigger-padding-y: var(--solaris-spacing-2);--solaris-dropdown-submenu-trigger-padding-x: var(--solaris-spacing-4);--solaris-dropdown-submenu-trigger-label-color: var(--solaris-text-default);--solaris-dropdown-submenu-trigger-danger-color: var(--solaris-danger-text);--solaris-dropdown-submenu-trigger-danger-hover: var( --solaris-danger-surface );--solaris-dropdown-submenu-trigger-focus-ring-color: var( --solaris-primary-base );--solaris-dropdown-submenu-trigger-hover-background: var( --solaris-surface-muted );--solaris-dropdown-submenu-trigger-trailing-color: var(--solaris-text-muted);display:flex;outline:none;cursor:pointer;align-items:center;text-decoration:none;box-sizing:border-box;min-height:var(--solaris-spacing-8);font-size:var(--solaris-font-size-sm);line-height:var(--solaris-line-height-sm);gap:var(--solaris-dropdown-submenu-trigger-gap);color:var(--solaris-dropdown-submenu-trigger-label-color);border-radius:var(--solaris-dropdown-submenu-trigger-radius);font-family:var(--solaris-font-family-sans),system-ui;padding:var(--solaris-dropdown-submenu-trigger-padding-y) var(--solaris-dropdown-submenu-trigger-padding-x);transition:background var(--solaris-motion-duration-fast) var(--solaris-motion-easing-standard)}:host(:hover){background:var(--solaris-dropdown-submenu-trigger-hover-background)}:host(:focus){outline-offset:-2px;background:var(--solaris-dropdown-submenu-trigger-hover-background)}:host(:focus-visible){outline:var(--solaris-border-width-md) solid var(--solaris-dropdown-submenu-trigger-focus-ring-color)}:host([data-disabled]){opacity:.5;cursor:not-allowed}:host([data-color=danger]){color:var(--solaris-dropdown-submenu-trigger-danger-color)}:host([data-color=danger]:hover),:host([data-color=danger]:focus){background:var(--solaris-dropdown-submenu-trigger-danger-hover)}.solaris-dropdown-submenu-trigger__wrapper{display:flex;flex:1;min-width:0;align-items:center;gap:var(--solaris-dropdown-submenu-trigger-gap)}.solaris-dropdown-submenu-trigger__leading{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--solaris-spacing-5);height:var(--solaris-spacing-5);color:var(--solaris-text-muted)}:host([data-color=danger]) .solaris-dropdown-submenu-trigger__leading{color:var(--solaris-dropdown-submenu-trigger-danger-color)}.solaris-dropdown-submenu-trigger__content{flex:1;min-width:0}.solaris-dropdown-submenu-trigger__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.solaris-dropdown-submenu-trigger__trailing{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--solaris-spacing-4);height:var(--solaris-spacing-4);margin-inline-start:var(--solaris-spacing-4);color:var(--solaris-dropdown-submenu-trigger-trailing-color)}@media(prefers-reduced-motion:reduce){:host{transition:none}}[data-reduced-motion=true] :host{transition:none}\n"], dependencies: [{ kind: "component", type: SolarisIconComponent, selector: "solaris-icon", inputs: ["name", "ariaLabel", "decorative"] }] });
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownSubmenuTriggerComponent, decorators: [{
|
|
65
|
+
type: Component,
|
|
66
|
+
args: [{ selector: 'solaris-dropdown-submenu-trigger', standalone: true, imports: [SolarisIconComponent], providers: [
|
|
67
|
+
{
|
|
68
|
+
provide: SOLARIS_DROPDOWN_NAVIGABLE_ITEM,
|
|
69
|
+
useExisting: forwardRef(() => SolarisDropdownSubmenuTriggerComponent),
|
|
70
|
+
},
|
|
71
|
+
], host: {
|
|
72
|
+
'[attr.role]': '"menuitem"',
|
|
73
|
+
'[attr.data-color]': 'color()',
|
|
74
|
+
'[attr.aria-haspopup]': '"menu"',
|
|
75
|
+
class: 'solaris-dropdown-submenu-trigger',
|
|
76
|
+
'[attr.aria-controls]': 'submenuPanelId()',
|
|
77
|
+
'[attr.tabindex]': 'disabled() ? "-1" : "0"',
|
|
78
|
+
'[attr.data-disabled]': 'disabled() ? "" : null',
|
|
79
|
+
'[attr.aria-disabled]': 'disabled() ? "true" : null',
|
|
80
|
+
'[attr.aria-expanded]': 'isSubmenuOpen() ? "true" : "false"',
|
|
81
|
+
}, template: "<div class=\"solaris-dropdown-submenu-trigger__wrapper\">\n @if (hasLeadingContent()) {\n <div class=\"solaris-dropdown-submenu-trigger__leading\">\n <solaris-icon [name]=\"icon()!\" aria-hidden=\"true\" />\n </div>\n }\n <div class=\"solaris-dropdown-submenu-trigger__content\">\n <ng-content></ng-content>\n @if (label()) {\n <span class=\"solaris-dropdown-submenu-trigger__label\">{{ label() }}</span>\n }\n </div>\n <div class=\"solaris-dropdown-submenu-trigger__trailing\">\n <solaris-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </div>\n</div>\n", styles: [":host{--solaris-dropdown-submenu-trigger-gap: var(--solaris-spacing-2);--solaris-dropdown-submenu-trigger-radius: var(--solaris-radius-sm);--solaris-dropdown-submenu-trigger-padding-y: var(--solaris-spacing-2);--solaris-dropdown-submenu-trigger-padding-x: var(--solaris-spacing-4);--solaris-dropdown-submenu-trigger-label-color: var(--solaris-text-default);--solaris-dropdown-submenu-trigger-danger-color: var(--solaris-danger-text);--solaris-dropdown-submenu-trigger-danger-hover: var( --solaris-danger-surface );--solaris-dropdown-submenu-trigger-focus-ring-color: var( --solaris-primary-base );--solaris-dropdown-submenu-trigger-hover-background: var( --solaris-surface-muted );--solaris-dropdown-submenu-trigger-trailing-color: var(--solaris-text-muted);display:flex;outline:none;cursor:pointer;align-items:center;text-decoration:none;box-sizing:border-box;min-height:var(--solaris-spacing-8);font-size:var(--solaris-font-size-sm);line-height:var(--solaris-line-height-sm);gap:var(--solaris-dropdown-submenu-trigger-gap);color:var(--solaris-dropdown-submenu-trigger-label-color);border-radius:var(--solaris-dropdown-submenu-trigger-radius);font-family:var(--solaris-font-family-sans),system-ui;padding:var(--solaris-dropdown-submenu-trigger-padding-y) var(--solaris-dropdown-submenu-trigger-padding-x);transition:background var(--solaris-motion-duration-fast) var(--solaris-motion-easing-standard)}:host(:hover){background:var(--solaris-dropdown-submenu-trigger-hover-background)}:host(:focus){outline-offset:-2px;background:var(--solaris-dropdown-submenu-trigger-hover-background)}:host(:focus-visible){outline:var(--solaris-border-width-md) solid var(--solaris-dropdown-submenu-trigger-focus-ring-color)}:host([data-disabled]){opacity:.5;cursor:not-allowed}:host([data-color=danger]){color:var(--solaris-dropdown-submenu-trigger-danger-color)}:host([data-color=danger]:hover),:host([data-color=danger]:focus){background:var(--solaris-dropdown-submenu-trigger-danger-hover)}.solaris-dropdown-submenu-trigger__wrapper{display:flex;flex:1;min-width:0;align-items:center;gap:var(--solaris-dropdown-submenu-trigger-gap)}.solaris-dropdown-submenu-trigger__leading{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--solaris-spacing-5);height:var(--solaris-spacing-5);color:var(--solaris-text-muted)}:host([data-color=danger]) .solaris-dropdown-submenu-trigger__leading{color:var(--solaris-dropdown-submenu-trigger-danger-color)}.solaris-dropdown-submenu-trigger__content{flex:1;min-width:0}.solaris-dropdown-submenu-trigger__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.solaris-dropdown-submenu-trigger__trailing{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--solaris-spacing-4);height:var(--solaris-spacing-4);margin-inline-start:var(--solaris-spacing-4);color:var(--solaris-dropdown-submenu-trigger-trailing-color)}@media(prefers-reduced-motion:reduce){:host{transition:none}}[data-reduced-motion=true] :host{transition:none}\n"] }]
|
|
82
|
+
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelKey", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], handleClick: [{
|
|
83
|
+
type: HostListener,
|
|
84
|
+
args: ['click']
|
|
85
|
+
}], onMouseEnter: [{
|
|
86
|
+
type: HostListener,
|
|
87
|
+
args: ['mouseenter']
|
|
88
|
+
}], onMouseLeave: [{
|
|
89
|
+
type: HostListener,
|
|
90
|
+
args: ['mouseleave']
|
|
91
|
+
}], onKeydown: [{
|
|
92
|
+
type: HostListener,
|
|
93
|
+
args: ['keydown', ['$event']]
|
|
94
|
+
}] } });
|
|
95
|
+
//# sourceMappingURL=dropdown-submenu-trigger.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-submenu-trigger.component.js","sourceRoot":"","sources":["../../../../../../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.ts","../../../../../../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n computed,\n forwardRef,\n} from '@angular/core';\n\nimport { SolarisIconComponent } from '../../../icon';\n\nimport type { SolarisDropdownMenuItemColor } from '../model/dropdown-menu.types';\nimport { SOLARIS_DROPDOWN_NAVIGABLE_ITEM } from '../model/dropdown-menu-navigation';\nimport { SolarisDropdownSubmenuComponent } from './dropdown-submenu.component';\n\n@Component({\n selector: 'solaris-dropdown-submenu-trigger',\n standalone: true,\n imports: [SolarisIconComponent],\n providers: [\n {\n provide: SOLARIS_DROPDOWN_NAVIGABLE_ITEM,\n useExisting: forwardRef(() => SolarisDropdownSubmenuTriggerComponent),\n },\n ],\n templateUrl: './dropdown-submenu-trigger.component.html',\n styleUrls: ['./dropdown-submenu-trigger.component.scss'],\n host: {\n '[attr.role]': '\"menuitem\"',\n '[attr.data-color]': 'color()',\n '[attr.aria-haspopup]': '\"menu\"',\n class: 'solaris-dropdown-submenu-trigger',\n '[attr.aria-controls]': 'submenuPanelId()',\n '[attr.tabindex]': 'disabled() ? \"-1\" : \"0\"',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.aria-expanded]': 'isSubmenuOpen() ? \"true\" : \"false\"',\n },\n})\nexport class SolarisDropdownSubmenuTriggerComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly submenu = inject(SolarisDropdownSubmenuComponent, {\n optional: true,\n });\n\n readonly icon = input<string | undefined>(undefined);\n readonly label = input<string | undefined>(undefined);\n readonly labelKey = input<string | undefined>(undefined);\n readonly disabled = input<boolean>(false);\n readonly color = input<SolarisDropdownMenuItemColor>('neutral');\n\n protected readonly isSubmenuOpen = computed(() => {\n return this.submenu?.isOpen() ?? false;\n });\n\n protected readonly submenuPanelId = computed(() => {\n return this.submenu?.nestedMenuPanelId() ?? null;\n });\n\n protected readonly hasLeadingContent = computed(() => !!this.icon());\n\n @HostListener('click')\n handleClick(): void {\n if (this.disabled()) return;\n this.submenu?.toggle();\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n if (this.disabled()) return;\n this.submenu?.onTriggerHover();\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n if (this.disabled()) return;\n this.submenu?.onTriggerLeave();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.stopPropagation();\n this.submenu?.toggle();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n event.stopPropagation();\n this.submenu?.open();\n }\n }\n\n focus(): void {\n // SECURITY_EXCEPTION: nativeElement.focus() required for programmatic focus. No alternative exists.\n this.elementRef.nativeElement.focus();\n }\n}\n","<div class=\"solaris-dropdown-submenu-trigger__wrapper\">\n @if (hasLeadingContent()) {\n <div class=\"solaris-dropdown-submenu-trigger__leading\">\n <solaris-icon [name]=\"icon()!\" aria-hidden=\"true\" />\n </div>\n }\n <div class=\"solaris-dropdown-submenu-trigger__content\">\n <ng-content></ng-content>\n @if (label()) {\n <span class=\"solaris-dropdown-submenu-trigger__label\">{{ label() }}</span>\n }\n </div>\n <div class=\"solaris-dropdown-submenu-trigger__trailing\">\n <solaris-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </div>\n</div>\n"]}
|