@aquera/nile-elements 0.0.1-beta.3 → 0.0.1-beta.4
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/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/index.d.ts +4 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/index.js +4 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/index.js.map +1 -1
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/internal/tabbable.d.ts +8 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/internal/tabbable.js +65 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/internal/tabbable.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-auto-complete/index.d.ts +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-auto-complete/index.js +2 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-auto-complete/index.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-auto-complete/nile-auto-complete.css.d.ts +12 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-auto-complete/nile-auto-complete.css.js +23 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-auto-complete/nile-auto-complete.css.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-auto-complete/nile-auto-complete.d.ts +27 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-auto-complete/nile-auto-complete.js +127 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-auto-complete/nile-auto-complete.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-chip/index.d.ts +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-chip/index.js +2 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-chip/index.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-chip/nile-chip.css.d.ts +12 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-chip/nile-chip.css.js +146 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-chip/nile-chip.css.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-chip/nile-chip.d.ts +44 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-chip/nile-chip.js +175 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-chip/nile-chip.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-dropdown/index.d.ts +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-dropdown/index.js +2 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-dropdown/index.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-dropdown/nile-dropdown.css.d.ts +12 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-dropdown/nile-dropdown.css.js +60 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-dropdown/nile-dropdown.css.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-dropdown/nile-dropdown.d.ts +105 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-dropdown/nile-dropdown.js +412 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-dropdown/nile-dropdown.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-input/nile-input.css.js +20 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-input/nile-input.css.js.map +1 -1
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu/index.d.ts +1 -41
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu/index.js +1 -119
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu/index.js.map +1 -1
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu/nile-menu.css.d.ts +12 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu/nile-menu.css.js +28 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu/nile-menu.css.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu/nile-menu.d.ts +43 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu/nile-menu.js +142 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu/nile-menu.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu-item/index.d.ts +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu-item/index.js +2 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu-item/index.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu-item/nile-menu-item.css.d.ts +12 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu-item/nile-menu-item.css.js +121 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu-item/nile-menu-item.css.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu-item/nile-menu-item.d.ts +62 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu-item/nile-menu-item.js +173 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/src/nile-menu-item/nile-menu-item.js.map +1 -0
- package/.rollup.cache/Users/ravisankar/aquera/nile/packages/nile-elements/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/internal/slot.cjs.js +1 -1
- package/dist/internal/slot.cjs.js.map +1 -1
- package/dist/internal/slot.esm.js +1 -1
- package/dist/internal/tabbable.cjs.js +2 -0
- package/dist/internal/tabbable.cjs.js.map +1 -0
- package/dist/internal/tabbable.esm.js +1 -0
- package/dist/nile-auto-complete/index.cjs.js +2 -0
- package/dist/nile-auto-complete/index.cjs.js.map +1 -0
- package/dist/nile-auto-complete/index.esm.js +1 -0
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js +2 -0
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -0
- package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js +2 -0
- package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js.map +1 -0
- package/dist/nile-auto-complete/nile-auto-complete.css.esm.js +11 -0
- package/dist/nile-auto-complete/nile-auto-complete.esm.js +21 -0
- package/dist/nile-chip/index.cjs.js +2 -0
- package/dist/nile-chip/index.cjs.js.map +1 -0
- package/dist/nile-chip/index.esm.js +1 -0
- package/dist/nile-chip/nile-chip.cjs.js +2 -0
- package/dist/nile-chip/nile-chip.cjs.js.map +1 -0
- package/dist/nile-chip/nile-chip.css.cjs.js +2 -0
- package/dist/nile-chip/nile-chip.css.cjs.js.map +1 -0
- package/dist/nile-chip/nile-chip.css.esm.js +134 -0
- package/dist/nile-chip/nile-chip.esm.js +46 -0
- package/dist/nile-dropdown/index.cjs.js +2 -0
- package/dist/nile-dropdown/index.cjs.js.map +1 -0
- package/dist/nile-dropdown/index.esm.js +1 -0
- package/dist/nile-dropdown/nile-dropdown.cjs.js +2 -0
- package/dist/nile-dropdown/nile-dropdown.cjs.js.map +1 -0
- package/dist/nile-dropdown/nile-dropdown.css.cjs.js +2 -0
- package/dist/nile-dropdown/nile-dropdown.css.cjs.js.map +1 -0
- package/dist/nile-dropdown/nile-dropdown.css.esm.js +48 -0
- package/dist/nile-dropdown/nile-dropdown.esm.js +33 -0
- package/dist/nile-input/nile-input.css.cjs.js +1 -1
- package/dist/nile-input/nile-input.css.cjs.js.map +1 -1
- package/dist/nile-input/nile-input.css.esm.js +20 -0
- package/dist/nile-menu/index.cjs.js +1 -1
- package/dist/nile-menu/index.cjs.js.map +1 -1
- package/dist/nile-menu/index.esm.js +1 -53
- package/dist/nile-menu/nile-menu.cjs.js +2 -0
- package/dist/nile-menu/nile-menu.cjs.js.map +1 -0
- package/dist/nile-menu/nile-menu.css.cjs.js +2 -0
- package/dist/nile-menu/nile-menu.css.cjs.js.map +1 -0
- package/dist/nile-menu/nile-menu.css.esm.js +16 -0
- package/dist/nile-menu/nile-menu.esm.js +8 -0
- package/dist/nile-menu-item/index.cjs.js +2 -0
- package/dist/nile-menu-item/index.cjs.js.map +1 -0
- package/dist/nile-menu-item/index.esm.js +1 -0
- package/dist/nile-menu-item/nile-menu-item.cjs.js +2 -0
- package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -0
- package/dist/nile-menu-item/nile-menu-item.css.cjs.js +2 -0
- package/dist/nile-menu-item/nile-menu-item.css.cjs.js.map +1 -0
- package/dist/nile-menu-item/nile-menu-item.css.esm.js +109 -0
- package/dist/nile-menu-item/nile-menu-item.esm.js +20 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal/tabbable.d.ts +8 -0
- package/dist/src/internal/tabbable.js +65 -0
- package/dist/src/internal/tabbable.js.map +1 -0
- package/dist/src/nile-auto-complete/index.d.ts +1 -0
- package/dist/src/nile-auto-complete/index.js +2 -0
- package/dist/src/nile-auto-complete/index.js.map +1 -0
- package/dist/src/nile-auto-complete/nile-auto-complete.css.d.ts +12 -0
- package/dist/src/nile-auto-complete/nile-auto-complete.css.js +23 -0
- package/dist/src/nile-auto-complete/nile-auto-complete.css.js.map +1 -0
- package/dist/src/nile-auto-complete/nile-auto-complete.d.ts +27 -0
- package/dist/src/nile-auto-complete/nile-auto-complete.js +127 -0
- package/dist/src/nile-auto-complete/nile-auto-complete.js.map +1 -0
- package/dist/src/nile-chip/index.d.ts +1 -0
- package/dist/src/nile-chip/index.js +2 -0
- package/dist/src/nile-chip/index.js.map +1 -0
- package/dist/src/nile-chip/nile-chip.css.d.ts +12 -0
- package/dist/src/nile-chip/nile-chip.css.js +146 -0
- package/dist/src/nile-chip/nile-chip.css.js.map +1 -0
- package/dist/src/nile-chip/nile-chip.d.ts +44 -0
- package/dist/src/nile-chip/nile-chip.js +175 -0
- package/dist/src/nile-chip/nile-chip.js.map +1 -0
- package/dist/src/nile-dropdown/index.d.ts +1 -0
- package/dist/src/nile-dropdown/index.js +2 -0
- package/dist/src/nile-dropdown/index.js.map +1 -0
- package/dist/src/nile-dropdown/nile-dropdown.css.d.ts +12 -0
- package/dist/src/nile-dropdown/nile-dropdown.css.js +60 -0
- package/dist/src/nile-dropdown/nile-dropdown.css.js.map +1 -0
- package/dist/src/nile-dropdown/nile-dropdown.d.ts +105 -0
- package/dist/src/nile-dropdown/nile-dropdown.js +412 -0
- package/dist/src/nile-dropdown/nile-dropdown.js.map +1 -0
- package/dist/src/nile-input/nile-input.css.js +20 -0
- package/dist/src/nile-input/nile-input.css.js.map +1 -1
- package/dist/src/nile-menu/index.d.ts +1 -41
- package/dist/src/nile-menu/index.js +1 -119
- package/dist/src/nile-menu/index.js.map +1 -1
- package/dist/src/nile-menu/nile-menu.css.d.ts +12 -0
- package/dist/src/nile-menu/nile-menu.css.js +28 -0
- package/dist/src/nile-menu/nile-menu.css.js.map +1 -0
- package/dist/src/nile-menu/nile-menu.d.ts +43 -0
- package/dist/src/nile-menu/nile-menu.js +142 -0
- package/dist/src/nile-menu/nile-menu.js.map +1 -0
- package/dist/src/nile-menu-item/index.d.ts +1 -0
- package/dist/src/nile-menu-item/index.js +2 -0
- package/dist/src/nile-menu-item/index.js.map +1 -0
- package/dist/src/nile-menu-item/nile-menu-item.css.d.ts +12 -0
- package/dist/src/nile-menu-item/nile-menu-item.css.js +121 -0
- package/dist/src/nile-menu-item/nile-menu-item.css.js.map +1 -0
- package/dist/src/nile-menu-item/nile-menu-item.d.ts +62 -0
- package/dist/src/nile-menu-item/nile-menu-item.js +173 -0
- package/dist/src/nile-menu-item/nile-menu-item.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/watch.cjs.js +1 -1
- package/dist/watch.cjs.js.map +1 -1
- package/dist/watch.esm.js +1 -1
- package/package.json +1 -1
- package/src/index.ts +4 -0
- package/src/internal/tabbable.ts +81 -0
- package/src/nile-auto-complete/index.ts +1 -0
- package/src/nile-auto-complete/nile-auto-complete.css.ts +25 -0
- package/src/nile-auto-complete/nile-auto-complete.ts +132 -0
- package/src/nile-chip/index.ts +1 -0
- package/src/nile-chip/nile-chip.css.ts +148 -0
- package/src/nile-chip/nile-chip.ts +183 -0
- package/src/nile-dropdown/index.ts +1 -0
- package/src/nile-dropdown/nile-dropdown.css.ts +62 -0
- package/src/nile-dropdown/nile-dropdown.ts +461 -0
- package/src/nile-input/nile-input.css.ts +20 -0
- package/src/nile-menu/index.ts +1 -116
- package/src/nile-menu/nile-menu.css.ts +30 -0
- package/src/nile-menu/nile-menu.ts +169 -0
- package/src/nile-menu-item/index.ts +1 -0
- package/src/nile-menu-item/nile-menu-item.css.ts +123 -0
- package/src/nile-menu-item/nile-menu-item.ts +171 -0
- package/src/nile-menu/nile-menu.scss +0 -0
@@ -0,0 +1,173 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright Aquera Inc 2023
|
3
|
+
*
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
import { __decorate } from "tslib";
|
8
|
+
import { html, property } from 'lit-element';
|
9
|
+
import { customElement } from 'lit/decorators.js';
|
10
|
+
import { styles } from './nile-menu-item.css';
|
11
|
+
import '../nile-icon';
|
12
|
+
import { classMap } from 'lit/directives/class-map.js';
|
13
|
+
import { query } from 'lit/decorators.js';
|
14
|
+
import { getTextContent } from '../internal/slot';
|
15
|
+
import { watch } from '../internal/watch';
|
16
|
+
import NileElement from '../internal/nile-element';
|
17
|
+
/**
|
18
|
+
* Nile icon component.
|
19
|
+
*
|
20
|
+
* @tag nile-menu-item
|
21
|
+
*
|
22
|
+
* @summary Menu items provide options for the user to pick from in a menu.
|
23
|
+
* @status stable
|
24
|
+
* @since 2.0
|
25
|
+
*
|
26
|
+
* @dependency nile-icon
|
27
|
+
*
|
28
|
+
* @slot - The menu item's label.
|
29
|
+
* @slot prefix - Used to prepend an icon or similar element to the menu item.
|
30
|
+
* @slot suffix - Used to append an icon or similar element to the menu item.
|
31
|
+
*
|
32
|
+
* @csspart base - The component's base wrapper.
|
33
|
+
* @csspart checked-icon - The checked icon, which is only visible when the menu item is checked.
|
34
|
+
* @csspart prefix - The prefix container.
|
35
|
+
* @csspart label - The menu item label.
|
36
|
+
* @csspart suffix - The suffix container.
|
37
|
+
* @csspart submenu-icon - The submenu icon, visible only when the menu item has a submenu (not yet implemented).
|
38
|
+
*/
|
39
|
+
let NileMenuItem = class NileMenuItem extends NileElement {
|
40
|
+
constructor() {
|
41
|
+
super(...arguments);
|
42
|
+
/** The type of menu item to render. To use `checked`, this value must be set to `checkbox`. */
|
43
|
+
this.type = 'normal';
|
44
|
+
/** Draws the item in a checked state. */
|
45
|
+
this.checked = false;
|
46
|
+
/** A unique value to store in the menu item. This can be used as a way to identify menu items when selected. */
|
47
|
+
this.value = '';
|
48
|
+
/** Draws the menu item in a disabled state, preventing selection. */
|
49
|
+
this.disabled = false;
|
50
|
+
}
|
51
|
+
connectedCallback() {
|
52
|
+
super.connectedCallback();
|
53
|
+
this.handleHostClick = this.handleHostClick.bind(this);
|
54
|
+
this.addEventListener('click', this.handleHostClick);
|
55
|
+
}
|
56
|
+
disconnectedCallback() {
|
57
|
+
super.disconnectedCallback();
|
58
|
+
this.removeEventListener('click', this.handleHostClick);
|
59
|
+
}
|
60
|
+
handleDefaultSlotChange() {
|
61
|
+
const textLabel = this.getTextLabel();
|
62
|
+
// Ignore the first time the label is set
|
63
|
+
if (typeof this.cachedTextLabel === 'undefined') {
|
64
|
+
this.cachedTextLabel = textLabel;
|
65
|
+
return;
|
66
|
+
}
|
67
|
+
// When the label changes, emit a slotchange event so parent controls see it
|
68
|
+
if (textLabel !== this.cachedTextLabel) {
|
69
|
+
this.cachedTextLabel = textLabel;
|
70
|
+
this.emit('slotchange', { bubbles: true, composed: false, cancelable: false });
|
71
|
+
}
|
72
|
+
}
|
73
|
+
handleHostClick(event) {
|
74
|
+
// Prevent the click event from being emitted when the button is disabled or loading
|
75
|
+
if (this.disabled) {
|
76
|
+
event.preventDefault();
|
77
|
+
event.stopImmediatePropagation();
|
78
|
+
}
|
79
|
+
}
|
80
|
+
handleCheckedChange() {
|
81
|
+
// For proper accessibility, users have to use type="checkbox" to use the checked attribute
|
82
|
+
if (this.checked && this.type !== 'checkbox') {
|
83
|
+
this.checked = false;
|
84
|
+
console.error('The checked attribute can only be used on menu items with type="checkbox"', this);
|
85
|
+
return;
|
86
|
+
}
|
87
|
+
// Only checkbox types can receive the aria-checked attribute
|
88
|
+
if (this.type === 'checkbox') {
|
89
|
+
this.setAttribute('aria-checked', this.checked ? 'true' : 'false');
|
90
|
+
}
|
91
|
+
else {
|
92
|
+
this.removeAttribute('aria-checked');
|
93
|
+
}
|
94
|
+
}
|
95
|
+
handleDisabledChange() {
|
96
|
+
this.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');
|
97
|
+
}
|
98
|
+
handleTypeChange() {
|
99
|
+
if (this.type === 'checkbox') {
|
100
|
+
this.setAttribute('role', 'menuitemcheckbox');
|
101
|
+
this.setAttribute('aria-checked', this.checked ? 'true' : 'false');
|
102
|
+
}
|
103
|
+
else {
|
104
|
+
this.setAttribute('role', 'menuitem');
|
105
|
+
this.removeAttribute('aria-checked');
|
106
|
+
}
|
107
|
+
}
|
108
|
+
/** Returns a text label based on the contents of the menu item's default slot. */
|
109
|
+
getTextLabel() {
|
110
|
+
return getTextContent(this.defaultSlot);
|
111
|
+
}
|
112
|
+
render() {
|
113
|
+
return html `
|
114
|
+
<div
|
115
|
+
part="base"
|
116
|
+
class=${classMap({
|
117
|
+
'menu-item': true,
|
118
|
+
'menu-item--checked': this.checked,
|
119
|
+
'menu-item--disabled': this.disabled,
|
120
|
+
'menu-item--has-submenu': false // reserved for future use
|
121
|
+
})}
|
122
|
+
>
|
123
|
+
<span part="checked-icon" class="menu-item__check">
|
124
|
+
<nile-icon name="check" library="system" aria-hidden="true"></nile-icon>
|
125
|
+
</span>
|
126
|
+
|
127
|
+
<slot name="prefix" part="prefix" class="menu-item__prefix"></slot>
|
128
|
+
|
129
|
+
<slot part="label" class="menu-item__label" @slotchange=${this.handleDefaultSlotChange}></slot>
|
130
|
+
|
131
|
+
<slot name="suffix" part="suffix" class="menu-item__suffix"></slot>
|
132
|
+
|
133
|
+
<span part="submenu-icon" class="menu-item__chevron">
|
134
|
+
<nile-icon name="chevron-right" library="system" aria-hidden="true"></nile-icon>
|
135
|
+
</span>
|
136
|
+
</div>
|
137
|
+
`;
|
138
|
+
}
|
139
|
+
};
|
140
|
+
NileMenuItem.styles = styles;
|
141
|
+
__decorate([
|
142
|
+
query('slot:not([name])')
|
143
|
+
], NileMenuItem.prototype, "defaultSlot", void 0);
|
144
|
+
__decorate([
|
145
|
+
query('.menu-item')
|
146
|
+
], NileMenuItem.prototype, "menuItem", void 0);
|
147
|
+
__decorate([
|
148
|
+
property()
|
149
|
+
], NileMenuItem.prototype, "type", void 0);
|
150
|
+
__decorate([
|
151
|
+
property({ type: Boolean, reflect: true })
|
152
|
+
], NileMenuItem.prototype, "checked", void 0);
|
153
|
+
__decorate([
|
154
|
+
property()
|
155
|
+
], NileMenuItem.prototype, "value", void 0);
|
156
|
+
__decorate([
|
157
|
+
property({ type: Boolean, reflect: true })
|
158
|
+
], NileMenuItem.prototype, "disabled", void 0);
|
159
|
+
__decorate([
|
160
|
+
watch('checked')
|
161
|
+
], NileMenuItem.prototype, "handleCheckedChange", null);
|
162
|
+
__decorate([
|
163
|
+
watch('disabled')
|
164
|
+
], NileMenuItem.prototype, "handleDisabledChange", null);
|
165
|
+
__decorate([
|
166
|
+
watch('type')
|
167
|
+
], NileMenuItem.prototype, "handleTypeChange", null);
|
168
|
+
NileMenuItem = __decorate([
|
169
|
+
customElement('nile-menu-item')
|
170
|
+
], NileMenuItem);
|
171
|
+
export { NileMenuItem };
|
172
|
+
export default NileMenuItem;
|
173
|
+
//# sourceMappingURL=nile-menu-item.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"nile-menu-item.js","sourceRoot":"","sources":["../../../src/nile-menu-item/nile-menu-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAEH,OAAO,EAAa,IAAI,EAAE,QAAQ,EAAiC,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,IAAa,YAAY,GAAzB,MAAa,YAAa,SAAQ,WAAW;IAA7C;;QASE,+FAA+F;QACnF,SAAI,GAA0B,QAAQ,CAAC;QAEnD,yCAAyC;QACG,YAAO,GAAG,KAAK,CAAC;QAE5D,gHAAgH;QACpG,UAAK,GAAG,EAAE,CAAC;QAEvB,qEAAqE;QACzB,aAAQ,GAAG,KAAK,CAAC;IAsG/D,CAAC;IApGC,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1D,CAAC;IAEO,uBAAuB;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,yCAAyC;QACzC,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,WAAW,EAAE;YAC/C,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,OAAO;SACR;QAED,4EAA4E;QAC5E,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE;YACtC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;SAChF;IACH,CAAC;IAEO,eAAe,CAAC,KAAiB;QACvC,oFAAoF;QACpF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;SAClC;IACH,CAAC;IAGD,mBAAmB;QACjB,2FAA2F;QAC3F,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,2EAA2E,EAAE,IAAI,CAAC,CAAC;YACjG,OAAO;SACR;QAED,6DAA6D;QAC7D,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACpE;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;SACtC;IACH,CAAC;IAGD,oBAAoB;QAClB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAGD,gBAAgB;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACpE;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;SACtC;IACH,CAAC;IAED,kFAAkF;IAClF,YAAY;QACV,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;gBAGC,QAAQ,CAAC;YACf,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,IAAI,CAAC,OAAO;YAClC,qBAAqB,EAAE,IAAI,CAAC,QAAQ;YACpC,wBAAwB,EAAE,KAAK,CAAC,0BAA0B;SAC3D,CAAC;;;;;;;;kEAQwD,IAAI,CAAC,uBAAuB;;;;;;;;KAQzF,CAAC;IACJ,CAAC;CACF,CAAA;AAxHQ,mBAAM,GAAmB,MAAO,CAAA;AAIZ;IAA1B,KAAK,CAAC,kBAAkB,CAAC;iDAA8B;AAEnC;IAApB,KAAK,CAAC,YAAY,CAAC;8CAAuB;AAG/B;IAAX,QAAQ,EAAE;0CAAwC;AAGP;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAiB;AAGhD;IAAX,QAAQ,EAAE;2CAAY;AAGqB;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CAAkB;AAsC7D;IADC,KAAK,CAAC,SAAS,CAAC;uDAehB;AAGD;IADC,KAAK,CAAC,UAAU,CAAC;wDAGjB;AAGD;IADC,KAAK,CAAC,MAAM,CAAC;oDASb;AAvFU,YAAY;IADxB,aAAa,CAAC,gBAAgB,CAAC;GACnB,YAAY,CAyHxB;SAzHY,YAAY;AA2HzB,eAAe,YAAY,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {LitElement, html, property, CSSResultArray, TemplateResult} from 'lit-element';\nimport { customElement } from 'lit/decorators.js';\nimport {styles} from './nile-menu-item.css';\nimport '../nile-icon';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query } from 'lit/decorators.js';\nimport { getTextContent } from '../internal/slot';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup } from 'lit';\n/**\n * Nile icon component.\n *\n * @tag nile-menu-item\n *\n * @summary Menu items provide options for the user to pick from in a menu.\n * @status stable\n * @since 2.0\n *\n * @dependency nile-icon\n *\n * @slot - The menu item's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n *\n * @csspart base - The component's base wrapper.\n * @csspart checked-icon - The checked icon, which is only visible when the menu item is checked.\n * @csspart prefix - The prefix container.\n * @csspart label - The menu item label.\n * @csspart suffix - The suffix container.\n * @csspart submenu-icon - The submenu icon, visible only when the menu item has a submenu (not yet implemented).\n */\n\n@customElement('nile-menu-item')\nexport class NileMenuItem extends NileElement {\n static styles: CSSResultGroup = styles;\n\n private cachedTextLabel: string;\n\n @query('slot:not([name])') defaultSlot: HTMLSlotElement;\n\n @query('.menu-item') menuItem: HTMLElement;\n\n /** The type of menu item to render. To use `checked`, this value must be set to `checkbox`. */\n @property() type: 'normal' | 'checkbox' = 'normal';\n\n /** Draws the item in a checked state. */\n @property({ type: Boolean, reflect: true }) checked = false;\n\n /** A unique value to store in the menu item. This can be used as a way to identify menu items when selected. */\n @property() value = '';\n\n /** Draws the menu item in a disabled state, preventing selection. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleHostClick = this.handleHostClick.bind(this);\n this.addEventListener('click', this.handleHostClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('click', this.handleHostClick);\n }\n\n private handleDefaultSlotChange() {\n const textLabel = this.getTextLabel();\n\n // Ignore the first time the label is set\n if (typeof this.cachedTextLabel === 'undefined') {\n this.cachedTextLabel = textLabel;\n return;\n }\n\n // When the label changes, emit a slotchange event so parent controls see it\n if (textLabel !== this.cachedTextLabel) {\n this.cachedTextLabel = textLabel;\n this.emit('slotchange', { bubbles: true, composed: false, cancelable: false });\n }\n }\n\n private handleHostClick(event: MouseEvent) {\n // Prevent the click event from being emitted when the button is disabled or loading\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @watch('checked')\n handleCheckedChange() {\n // For proper accessibility, users have to use type=\"checkbox\" to use the checked attribute\n if (this.checked && this.type !== 'checkbox') {\n this.checked = false;\n console.error('The checked attribute can only be used on menu items with type=\"checkbox\"', this);\n return;\n }\n\n // Only checkbox types can receive the aria-checked attribute\n if (this.type === 'checkbox') {\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n } else {\n this.removeAttribute('aria-checked');\n }\n }\n\n @watch('disabled')\n handleDisabledChange() {\n this.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');\n }\n\n @watch('type')\n handleTypeChange() {\n if (this.type === 'checkbox') {\n this.setAttribute('role', 'menuitemcheckbox');\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n } else {\n this.setAttribute('role', 'menuitem');\n this.removeAttribute('aria-checked');\n }\n }\n\n /** Returns a text label based on the contents of the menu item's default slot. */\n getTextLabel() {\n return getTextContent(this.defaultSlot);\n }\n\n render() {\n return html`\n <div\n part=\"base\"\n class=${classMap({\n 'menu-item': true,\n 'menu-item--checked': this.checked,\n 'menu-item--disabled': this.disabled,\n 'menu-item--has-submenu': false // reserved for future use\n })}\n >\n <span part=\"checked-icon\" class=\"menu-item__check\">\n <nile-icon name=\"check\" library=\"system\" aria-hidden=\"true\"></nile-icon>\n </span>\n\n <slot name=\"prefix\" part=\"prefix\" class=\"menu-item__prefix\"></slot>\n\n <slot part=\"label\" class=\"menu-item__label\" @slotchange=${this.handleDefaultSlotChange}></slot>\n\n <slot name=\"suffix\" part=\"suffix\" class=\"menu-item__suffix\"></slot>\n\n <span part=\"submenu-icon\" class=\"menu-item__chevron\">\n <nile-icon name=\"chevron-right\" library=\"system\" aria-hidden=\"true\"></nile-icon>\n </span>\n </div>\n `;\n }\n}\n\nexport default NileMenuItem;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-menu-item': NileMenuItem;\n }\n}\n"]}
|