-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor(components): menu item migrate to fast (#636)
* refactor(components): menu migrate to fast * progress * works * progressed * mixed menu * Change files * Update libs/components/src/lib/menu-item/index.ts * typo * exports * info * progress * focus issue * ok * need it * grammer * update * done * snaps * resolve comments * ui tests * snapshots * stylelint * add coverage * icon unit test * increase coverage * simple * resolve comments * text test * done * update * 1 line item * snaps * max min * stylelint * typo * @testing-library/dom * maybe now * remove
- Loading branch information
Showing
27 changed files
with
1,208 additions
and
385 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
7 changes: 7 additions & 0 deletions
7
change/@vonage-vivid-a6e21985-d4fd-47d1-9128-62f93414c0b2.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"type": "prerelease", | ||
"comment": "menu migration to fast", | ||
"packageName": "@vonage/vivid", | ||
"email": "[email protected]", | ||
"dependentChangeType": "patch" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
# Menu Item | ||
|
||
Represents a menu-item custom element. | ||
|
||
```js | ||
<script type="module"> | ||
import '@vonage/vivid/menu-item'; | ||
</script> | ||
``` | ||
|
||
```html preview | ||
|
||
<vwc-menu open> | ||
<vwc-menu-item text="Menu item"></vwc-menu-item> | ||
</vwc-menu> | ||
``` | ||
|
||
## Members | ||
|
||
### Role | ||
|
||
set `role` to change the role of the menu item | ||
|
||
- Type: `'menuitem'` | `'menuitemcheckbox'` | `'menuitemradio'` | ||
- Default: `'menuitem'` | ||
|
||
```html preview | ||
<style> | ||
html { | ||
block-size: 360px; | ||
} | ||
</style> | ||
|
||
<vwc-menu open> | ||
<vwc-menu-item role="menuitem" text="Menu item 1"></vwc-menu-item> | ||
<vwc-menu-item role="menuitem" text="Menu item 2"></vwc-menu-item> | ||
<vwc-divider></vwc-divider> | ||
<vwc-menu-item role="menuitemcheckbox" text="Checkbox 1"></vwc-menu-item> | ||
<vwc-menu-item role="menuitemcheckbox" text="Checkbox 2"></vwc-menu-item> | ||
<vwc-divider></vwc-divider> | ||
<vwc-menu-item role="menuitemradio" text="Radio 1.1"></vwc-menu-item> | ||
<vwc-menu-item role="menuitemradio" text="Radio 1.2"></vwc-menu-item> | ||
<vwc-divider></vwc-divider> | ||
<vwc-menu-item role="menuitemradio" text="Radio 2.1"></vwc-menu-item> | ||
<vwc-menu-item role="menuitemradio" text="Radio 2.2"></vwc-menu-item> | ||
</vwc-menu> | ||
``` | ||
|
||
### Icon | ||
|
||
Use `icon` to set an icon to the nav item. | ||
View list of available icon at the [vivid icons gallery](https://icons.vivid.vonage.com). | ||
|
||
Note: Icon, by its own, doesn't make a discernible text. An `aria-label`, `aria-labelledby` or `title` must be provided to ensure that the user can understand the nav item's purpose. | ||
|
||
- Type: `string` | ||
- Default: `undefined` | ||
|
||
```html preview | ||
<vwc-menu open> | ||
<vwc-menu-item icon="file-pdf-line" text="Export to PDF"></vwc-menu-item> | ||
</vwc-menu> | ||
``` | ||
|
||
### Checked | ||
|
||
The checked value of the element (if role is set to `'menuitemcheckbox'`). | ||
|
||
- Type: `boolean` | ||
- Default: `false` | ||
|
||
```html preview | ||
<vwc-menu open> | ||
<vwc-menu-item role="menuitemcheckbox" checked text="Checked Menu item"></vwc-menu-item> | ||
</vwc-menu> | ||
``` | ||
|
||
### Disabled | ||
|
||
The disabled state of the element | ||
|
||
- Type: `boolean` | ||
- Default: `false` | ||
|
||
```html preview | ||
<vwc-menu open> | ||
<vwc-menu-item disabled text="Disabled Menu item"></vwc-menu-item> | ||
</vwc-menu> | ||
``` | ||
|
||
<!-- ### Expanded | ||
The expanded state of the element | ||
- Type: `boolean` | ||
- Default: `false` --> | ||
|
||
## Events | ||
|
||
### Expanded Change | ||
|
||
Fires a custom 'expanded-change' event when the expanded state changes | ||
|
||
### Change | ||
|
||
Fires a custom 'change' event when a non-submenu item with a role of `menuitemcheckbox`, `menuitemradio`, or `menuitem` is invoked |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import '../icon'; | ||
|
||
import type { MenuItemOptions } from '@microsoft/fast-foundation'; | ||
import { designSystem } from '../../shared/design-system'; | ||
import styles from './menu-item.scss'; | ||
|
||
import { MenuItem } from './menu-item'; | ||
import { MenuItemTemplate as template } from './menu-item.template'; | ||
|
||
export const vividMenuItem = MenuItem.compose<MenuItemOptions>({ | ||
baseName: 'menu-item', | ||
template: template as any, | ||
styles | ||
}); | ||
|
||
designSystem.register(vividMenuItem()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
@use '../../../../../dist/libs/tokens/scss/constants' as constants; | ||
|
||
@use '../../../../shared/src/lib/sass/mixins/connotation/config' with ( | ||
$connotations: accent, | ||
$shades: primary faint soft, | ||
$default: accent, | ||
); | ||
@use '../../../../shared/src/lib/sass/mixins/connotation' as connotation; | ||
|
||
@use '../../../../shared/src/lib/sass/mixins/appearance/config' as appearance-config with ( | ||
$appearances: ghost, | ||
$states: idle hover active selected disabled, | ||
$default: ghost, | ||
); | ||
@use '../../../../shared/src/lib/sass/mixins/appearance' as appearance; | ||
|
||
@supports selector(:focus-visible) { | ||
:host(:focus) { | ||
outline: none; | ||
} | ||
} | ||
|
||
.base { | ||
$min-block-size: 40px; | ||
$gap: 8px; | ||
|
||
@include appearance.appearance; | ||
@include connotation.connotation; | ||
|
||
position: relative; | ||
display: flex; | ||
box-sizing: border-box; | ||
align-items: center; | ||
background-color: var(#{appearance.get-appearance-token(fill)}); | ||
block-size: $min-block-size; | ||
box-shadow: inset 0 0 0 1px var(#{appearance.get-appearance-token(outline)}); | ||
color: var(#{appearance.get-appearance-token(text)}); | ||
font: var(#{constants.$vvd-font-base}); | ||
gap: $gap; | ||
inline-size: 100%; | ||
padding-inline: $gap; | ||
|
||
@supports(user-select: none) { | ||
user-select: none; | ||
} | ||
|
||
&:not(.disabled) { | ||
cursor: pointer; | ||
} | ||
|
||
&.disabled { | ||
cursor: not-allowed; | ||
} | ||
} | ||
|
||
.focus-indicator { | ||
border-radius: 6px; | ||
:host(:not(:focus-visible)) & { | ||
display: none; | ||
} | ||
} | ||
|
||
.icon { | ||
font-size: 20px; | ||
|
||
.base:not(.item-checkbox, .item-radio) & { | ||
color: var(#{constants.$vvd-color-neutral-600}); | ||
} | ||
} | ||
|
||
.text { | ||
overflow: hidden; | ||
text-overflow: ellipsis; | ||
white-space: nowrap; | ||
} |
Oops, something went wrong.