diff --git a/docs/src/components-spec.json b/docs/src/components-spec.json index eb7556a966..d5ae78c202 100644 --- a/docs/src/components-spec.json +++ b/docs/src/components-spec.json @@ -273,6 +273,33 @@ "icon-name": "text" } }, + + "gux-tag-popover": { + "attributes": { + "position": ["left", "right"], + "color": "text" + }, + "events": { "deleteTag": "delete tag" } + }, + "gux-tag": { + "attributes": { + "color": [ + "navy", + "blue", + "electric-purple", + "aqua-green", + "fuscha", + "dark-purple", + "bubblegum-pink", + "olive-green", + "lilac", + "yellow-green" + ] + }, + "events": { + "deleteTag": "Click on delete tag button" + } + }, "gux-text-field": { "attributes": { "value": "text", diff --git a/src/components/beta/gux-tag-popover/example.html b/src/components/beta/gux-tag-popover/example.html new file mode 100644 index 0000000000..9264bb9a55 --- /dev/null +++ b/src/components/beta/gux-tag-popover/example.html @@ -0,0 +1,30 @@ + + + American English + Latin American Spanish + European Spanish + UK English + Canadian French + European French + Dutch + +
+ + American English + Latin American Spanish + European Spanish + UK English + Canadian French + European French + Dutch + +
+ + American English + Latin American Spanish + European Spanish + UK English + Canadian French + European French + Dutch + \ No newline at end of file diff --git a/src/components/beta/gux-tag-popover/gux-tag-popover.less b/src/components/beta/gux-tag-popover/gux-tag-popover.less new file mode 100644 index 0000000000..a7a16047a5 --- /dev/null +++ b/src/components/beta/gux-tag-popover/gux-tag-popover.less @@ -0,0 +1,302 @@ +@import (reference) '../../../style/color.less'; + +// Variables part +@grey: #222529; + +@menu-background-color: @gux-off-white; +@menu-border-color: #dae1eb; + +@border-radius: 2px; + +// Style +gux-tag-popover-beta { + div.gux-tag-popover { + position: relative; + margin: 4px 0; + + &.right { + .gux-tag-popover-container { + text-align: right; + } + .arrow { + margin-right: 19px; + right: 0; + } + } + + &.left { + .gux-tag-popover-container { + text-align: left; + } + .arrow { + margin-left: 19px; + left: 0; + } + } + + .gux-tag-popover-container { + position: relative; + height: 32px; + width: 100%; + + .gux-tag-popover-button { + button { + font-size: 16px; + } + + &.has-tags > button { + color: @gux-dark-blue; + } + + &:focus { + outline: none; + box-shadow: 0 0 0 3px fade(@gux-blue, 50%); + } + } + } + + .gux-tag-popover-menu { + display: none; + box-shadow: 0 0 2px fade(@grey, 24%); + margin-top: 8px; + position: relative; + width: 100%; + + .arrow, + .arrow::after { + position: absolute; + content: ' '; + height: 0; + width: 0; + border-style: solid; + border-color: transparent; + } + .arrow { + border-width: 6px; + border-bottom-color: @gux-border; + margin-top: -12px; + } + .arrow::after { + border-width: 4px; + border-bottom-color: @gux-off-white; + margin-top: -2px; + margin-left: -4px; + } + + .gux-tag-popover-menu-container { + padding: 8px; + background: @gux-off-white; + + .gux-tag-popover-options-container { + display: flex; + + .gux-tag-popover-title { + padding: 0 5px; + white-space: nowrap; + display: flex; + flex-direction: column; + justify-content: center; + } + + .gux-tag-popover-chip-container { + margin-left: 7px; + padding: 2px 5px; + display: flex; + border-radius: @border-radius; + border: 1px solid @gux-charcoal-grey; + flex: 1 1 auto; + flex-wrap: wrap; + &.active { + border-color: @gux-dark-blue; + } + } + + .gux-tag-popover-chip { + display: flex; + margin: 4px 0; + } + + .gux-tag-popover-chip-text, + .gux-tag-popover-chip-close-icon-wrap { + background-color: @gux-charcoal-grey; + height: 24px; + border-radius: @border-radius; + color: white; + margin-right: 8px; + font-weight: bold; + text-align: center; + } + + .gux-tag-popover-chip-text { + display: flex; + white-space: nowrap; + padding: 0 8px; + line-height: 24px; + } + + .gux-tag-popover-chip:hover { + .gux-tag-popover-chip-text { + margin-right: 1px; + border-radius: @border-radius 0 0 @border-radius; + } + .gux-tag-popover-chip-close-icon-wrap { + display: flex; + border-radius: 0 @border-radius @border-radius 0; + } + } + + .gux-tag-popover-chip-close-icon-wrap { + width: 24px; + box-sizing: border-box; + display: none; + cursor: pointer; + flex-direction: column; + justify-content: center; + } + + .gux-tag-popover-chip-icon-wrap { + display: flex; + flex-direction: column; + justify-content: center; + padding-right: 8px; + } + + .gux-tag-popover-chip-close-icon { + margin: 0 auto; + } + + // GUX-DROPDOWN component + gux-dropdown input { + height: 24px; + background-color: transparent; + padding: 0; + outline: 0; + border: none; + width: 100%; + } + + gux-dropdown input:focus { + border: none !important; + box-shadow: none !important; + } + + gux-dropdown div.gux-dropdown .select-field { + height: 24px; + } + + gux-dropdown div.gux-dropdown .select-field .ghost { + background-color: transparent; + color: transparent; + border: none; + } + + gux-text-field > div > div.gux-field { + height: 24px; + } + + gux-dropdown div.gux-dropdown .select-field button.dropdown-indicator { + display: none; + } + + + .gux-tag-popover-tags-container { + display: flex; + flex-wrap: wrap; + } + + .gux-tag-popover-input-container { + position: relative; + flex: 1 1 auto; + } + } + + } + + &.opened { + display: block; + } + } + + .gux-tag-popover-options { + display: none; + position: absolute; + margin: 0; + margin-top: 12px; + padding: 8px 0; + background: @menu-background-color; + border: 1px solid @menu-border-color; + box-shadow: none; + z-index: 1; + color: @gux-charcoal-grey; + + &.opened { + display: block; + } + + > gux-tag-popover-option { + position: relative; + height: 32px; + line-height: 32px; + padding: 0 16px; + display: flex; + cursor: pointer; + + & { + &[selected] { + background: @gux-text-selection; + color: @gux-charcoal-grey; + } + + &:hover, + &:focus { + background: @gux-dark-blue; + color: @gux-off-white; + } + } + } + } + } +} + +// Theming + +// Dark +.gux-tag-popover-dark-theme { + color: @gux-off-white; + + div.gux-tag-popover { + .gux-tag-popover-title { + color: @gux-charcoal-grey; + } + } +} + +.gux-dark-theme { + gux-tag-popover-beta { + .gux-tag-popover-dark-theme(); + } +} + +gux-tag-popover-beta.gux-dark-theme { + .gux-tag-popover-dark-theme(); +} + +// Light +.gux-tag-popover-light-theme { + color: @gux-charcoal-grey; +} + +.gux-light-theme { + gux-tag-popover-beta { + .gux-tag-popover-light-theme(); + } +} + +gux-tag-popover-beta.gux-light-theme { + .gux-tag-popover-light-theme(); +} + +// Default Theme +gux-tag-popover-beta { + .gux-tag-popover-light-theme(); +} diff --git a/src/components/beta/gux-tag-popover/gux-tag-popover.tsx b/src/components/beta/gux-tag-popover/gux-tag-popover.tsx new file mode 100644 index 0000000000..97d56e5d36 --- /dev/null +++ b/src/components/beta/gux-tag-popover/gux-tag-popover.tsx @@ -0,0 +1,170 @@ +import { Component, Element, h, Listen, Prop, State } from '@stencil/core'; +import { buildI18nForComponent } from '../../../i18n'; +import tagPopoverResources from './i18n/en.json'; +import { GuxTag } from '../gux-tag/gux-tag'; + +@Component({ + styleUrl: 'gux-tag-popover.less', + tag: 'gux-tag-popover-beta' +}) +export class GuxTagPopover { + @Element() + root: HTMLElement; + i18n: (resourceKey: string, context?: any) => string; + + /** + * Tags color + */ + @Prop() + color: + | 'navy' + | 'blue' + | 'electric-purple' + | 'aqua-green' + | 'fuscha' + | 'dark-purple' + | 'bubblegum-pink' + | 'olive-green' + | 'lilac' + | 'yellow-green'; + + /** + * Indicates the position of the tag button (right or left) + */ + @Prop() + position: string = 'left'; + + @State() + opened: boolean; + + @State() + allOptions: HTMLGuxOptionElement[] = []; + + @State() + availableOptions: HTMLGuxOptionElement[] = []; + + @State() + tags: string[] = []; + + @State() + inputValue: string = ''; + + @Listen('deleteTag') + onDeleteTag(event): void { + const tags = this.tags; + tags.splice(event.detail, 1); + this.filterOptions(); + this.tags = [...tags]; + } + + @Listen('change') // This is not a native "change" event + handleChange(event) { + event.stopPropagation(); + this.tags = [...this.tags, event.target.value]; + this.filterOptions(); + event.target.value = this.inputValue = ' '; + setTimeout(() => { + event.target.value = this.inputValue = ''; + const dropdownInput = this.root.querySelector( + 'gux-dropdown input' + ) as HTMLElement; + dropdownInput.focus(); + }); + } + + async componentWillLoad() { + this.i18n = await buildI18nForComponent(this.root, tagPopoverResources); + this.allOptions = Array.from(this.root.querySelectorAll('gux-option')); + this.availableOptions = [...this.allOptions]; + } + + render() { + return ( +
+
+ this.handlerClickOnMenuButton()} + > + + +
+
+
+
+
+ {this.i18n('menuTitle')} +
+ {this.getTags()} + {this.getDropdown()} + + + +
+
+
+
+
+ ); + } + + private getDropdown(): HTMLElement { + return ( +
+ this.addCustomTag(e)} + filterable + > + {this.availableOptions.map(option => { + return {option.text}; + })} + +
+ ); + } + + private getTags(): GuxTag[] { + const tags = []; + this.tags.map((tag, index) => { + const tagChip = ( + + {tag} + + ); + tags.push(tagChip); + }); + return tags; + } + + private addCustomTag(event): void { + const target = event.target as HTMLInputElement; + const value = target.value; + + if (event.key === ' ' || event.key === 'Enter') { + event.preventDefault(); + if (this.tags.indexOf(value) !== -1) { + return; + } + if (value && value.trim().length) { + this.tags = [...this.tags, value]; + } + event.target.value = this.inputValue = ' '; + setTimeout(() => { + event.target.value = this.inputValue = ''; + }); + } + } + + private filterOptions(): void { + this.availableOptions = this.allOptions.filter( + option => !this.tags.includes(option.text) + ); + } + + private handlerClickOnMenuButton(): void { + this.opened = !this.opened; + } +} diff --git a/src/components/beta/gux-tag-popover/i18n/en.json b/src/components/beta/gux-tag-popover/i18n/en.json new file mode 100644 index 0000000000..f9210cde7a --- /dev/null +++ b/src/components/beta/gux-tag-popover/i18n/en.json @@ -0,0 +1,3 @@ +{ + "menuTitle": "Add Tags" +} diff --git a/src/components/beta/gux-tag-popover/readme.md b/src/components/beta/gux-tag-popover/readme.md new file mode 100644 index 0000000000..6e3a432a79 --- /dev/null +++ b/src/components/beta/gux-tag-popover/readme.md @@ -0,0 +1,42 @@ +# gux-tag-popover + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ---------- | ---------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- | +| `color` | `color` | Tags color | `"aqua-green" \| "blue" \| "bubblegum-pink" \| "dark-purple" \| "electric-purple" \| "fuscha" \| "lilac" \| "navy" \| "olive-green" \| "yellow-green"` | `undefined` | +| `position` | `position` | Indicates the position of the tag button (right or left) | `string` | `'left'` | + + +## Dependencies + +### Depends on + +- [gux-button](../../stable/gux-button) +- [gux-icon](../../stable/gux-icon) +- [gux-dropdown](../../stable/gux-dropdown) +- [gux-option](../../stable/gux-dropdown/gux-option) +- [gux-tag-beta](../gux-tag) + +### Graph +```mermaid +graph TD; + gux-tag-popover-beta --> gux-button + gux-tag-popover-beta --> gux-icon + gux-tag-popover-beta --> gux-dropdown + gux-tag-popover-beta --> gux-option + gux-tag-popover-beta --> gux-tag-beta + gux-dropdown --> gux-text-field + gux-dropdown --> gux-icon + gux-text-field --> gux-icon + gux-option --> gux-text-highlight + gux-tag-beta --> gux-icon + style gux-tag-popover-beta fill:#f9f,stroke:#333,stroke-width:4px +``` + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/src/components/beta/gux-tag-popover/tests/__snapshots__/gux-tag-popover.spec.ts.snap b/src/components/beta/gux-tag-popover/tests/__snapshots__/gux-tag-popover.spec.ts.snap new file mode 100644 index 0000000000..4ba078bea8 --- /dev/null +++ b/src/components/beta/gux-tag-popover/tests/__snapshots__/gux-tag-popover.spec.ts.snap @@ -0,0 +1,40 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`gux-tag-popover should render 1`] = ` + + +
+
+ + + +
+
+
+
+
+ + Add Tags + +
+
+ + + + +
+ + + English + + + Dutch + + +
+
+
+
+
+
+`; diff --git a/src/components/beta/gux-tag-popover/tests/gux-tag-popover.e2e.ts b/src/components/beta/gux-tag-popover/tests/gux-tag-popover.e2e.ts new file mode 100644 index 0000000000..8f7a1289ca --- /dev/null +++ b/src/components/beta/gux-tag-popover/tests/gux-tag-popover.e2e.ts @@ -0,0 +1,83 @@ +import { newE2EPage } from '@stencil/core/testing'; + +describe('gux-tag-popover-beta', () => { + it('renders', async () => { + const page = await newE2EPage(); + + await page.setContent(''); + const element = await page.find('gux-tag-popover-beta'); + expect(element).toHaveClass('hydrated'); + }); + + it('opens menu on click', async () => { + const page = await newE2EPage(); + await page.setContent(` + + English + Dutch + + `); + await page.waitForChanges(); + + const element = await page.find('gux-tag-popover-beta'); + const btnElm = await element.find('.gux-tag-popover-button'); + btnElm.click(); + await page.waitForChanges(); + + const menuElm = await element.find('.gux-tag-popover-menu'); + expect(menuElm.className.split(' ')).toContain('opened'); + }); + + it('opens options on click', async () => { + const page = await newE2EPage(); + await page.setContent(` + + English + Dutch + + `); + await page.waitForChanges(); + + const element = await page.find('gux-tag-popover-beta'); + const btnElm = await element.find('.gux-tag-popover-button'); + btnElm.click(); + await page.waitForChanges(); + + const inputElm = await element.find('.gux-dropdown'); + inputElm.click(); + await page.waitForChanges(); + + const optionsElm = await element.find('.gux-options'); + expect(optionsElm.className.split(' ')).toContain('opened'); + }); + + it('selects an item when an option is clicked', async () => { + const page = await newE2EPage(); + await page.setContent(` + + English + Dutch + + `); + await page.waitForChanges(); + + const element = await page.find('gux-tag-popover-beta'); + const btnElm = await element.find('.gux-tag-popover-button'); + btnElm.click(); + await page.waitForChanges(); + + const inputElm = await element.find('.gux-dropdown'); + inputElm.click(); + await page.waitForChanges(); + + const optionElm = await element.find('gux-option'); + optionElm.click(); + await page.waitForChanges(); + + const optionsElm = await element.find('.gux-options'); + expect(optionsElm.className.split(' ')).not.toContain('opened'); + + const tagElm = await element.find('gux-tag-beta'); + expect(tagElm).not.toBeNull(); + }); +}); diff --git a/src/components/beta/gux-tag-popover/tests/gux-tag-popover.spec.ts b/src/components/beta/gux-tag-popover/tests/gux-tag-popover.spec.ts new file mode 100644 index 0000000000..6aac4c459f --- /dev/null +++ b/src/components/beta/gux-tag-popover/tests/gux-tag-popover.spec.ts @@ -0,0 +1,19 @@ +import { newSpecPage } from '@stencil/core/testing'; +import { GuxTagPopover } from '../gux-tag-popover'; + +describe('gux-tag-popover', () => { + it('should render', async () => { + const page = await newSpecPage({ + components: [GuxTagPopover], + html: ` + + English + Dutch + + `, + language: 'en' + }); + + expect(page.root).toMatchSnapshot(); + }); +}); diff --git a/src/components/beta/gux-tag/example.html b/src/components/beta/gux-tag/example.html new file mode 100644 index 0000000000..bef8a99b0f --- /dev/null +++ b/src/components/beta/gux-tag/example.html @@ -0,0 +1,11 @@ +Basic +dark blue +blue +purple +teal +light purple +dark pink +dark purple +pink +dark yellow +yellow \ No newline at end of file diff --git a/src/components/beta/gux-tag/gux-tag.less b/src/components/beta/gux-tag/gux-tag.less new file mode 100644 index 0000000000..47487131ed --- /dev/null +++ b/src/components/beta/gux-tag/gux-tag.less @@ -0,0 +1,134 @@ +@import (reference) '../../../style/color.less'; +// Variables part +@border-radius: 2px; + +// Style +gux-tag-beta { + margin-right: 8px; + display: inline-block; + div.gux-tag { + position: relative; + margin: 4px 0; + display: flex; + margin: 4px 0; + + .gux-tag-text, + .gux-tag-delete-button { + background-color: @gux-charcoal-grey; + height: 22px; + border-radius: @border-radius; + text-align: center; + color: white; + padding: 0; + } + + .navy { background-color: @gux-navy; } + .blue { background-color: @gux-blue; } + .electric-purple { background-color: @gux-electric-purple; } + .aqua-green { background-color: @gux-aqua-green; } + .fuscha { background-color: @gux-fuscha; } + .dark-purple { background-color: @gux-dark-purple; } + .bubblegum-pink { background-color: @gux-bubblegum-pink; } + .olive-green { background-color: @gux-olive-green;} + .lilac { + background-color: @gux-lilac; + color: @gux-charcoal-grey; + } + .yellow { + background-color: @gux-yellow-green; + color: @gux-charcoal-grey; + } + + .gux-tag-text { + white-space: nowrap; + padding: 1px 8px; + line-height: 22px; + } + + .gux-tag-delete-button { + width: 0; + height: 24px; + display: flex; + border: none; + cursor: pointer; + flex-direction: column; + justify-content: center; + border-radius: 0 @border-radius @border-radius 0; + margin-left: 1px; + } + + .gux-tag-delete-icon { + margin: 0 auto; + display: none; + } + .gux-tag-delete-button:active, + .gux-tag-delete-button:focus { + display: flex; + } + + .show-delete-button { + width: 24px; + .gux-tag-delete-icon { + display: inline-block; + } + } + .active-text-element { + border-radius: @border-radius 0 0 @border-radius; + } + + &:hover { + .gux-tag-text { + .active-text-element() + } + .gux-tag-delete-button { + .show-delete-button() + } + } + .gux-tag-text:focus { + .active-text-element() + } + .gux-tag-delete-button:focus { + .show-delete-button() + } + .gux-tag-text:focus ~ .gux-tag-delete-button { + .show-delete-button(); + } + } +} + +// Theming + +// Dark +.gux-tag-dark-theme { + color: @gux-off-white; +} + +.gux-dark-theme { + gux-tag-beta { + .gux-tag-dark-theme(); + } +} + +gux-tag-beta.gux-dark-theme { + .gux-tag-dark-theme(); +} + +// Light +.gux-tag-light-theme { + color: @gux-charcoal-grey; +} + +.gux-light-theme { + gux-tag-beta { + .gux-tag-light-theme(); + } +} + +gux-tag-beta.gux-light-theme { + .gux-tag-light-theme(); +} + +// Default Theme +gux-tag-beta { + .gux-tag-light-theme(); +} diff --git a/src/components/beta/gux-tag/gux-tag.tsx b/src/components/beta/gux-tag/gux-tag.tsx new file mode 100644 index 0000000000..d1306b44f6 --- /dev/null +++ b/src/components/beta/gux-tag/gux-tag.tsx @@ -0,0 +1,85 @@ +import { + Component, + Element, + h, + Prop, + Event, + EventEmitter +} from '@stencil/core'; +import tagResources from './i18n/en.json'; +import { buildI18nForComponent } from '../../../i18n'; + +@Component({ + styleUrl: 'gux-tag.less', + tag: 'gux-tag-beta' +}) +export class GuxTag { + @Element() + root: HTMLElement; + + /** + * Triggered when click on close button + */ + @Event() + deleteTag: EventEmitter; + + /** + * Tag background color. + */ + @Prop() + color: + | 'navy' + | 'blue' + | 'electric-purple' + | 'aqua-green' + | 'fuscha' + | 'dark-purple' + | 'bubblegum-pink' + | 'olive-green' + | 'lilac' + | 'yellow-green'; + + /** + * Index for remove tag + */ + @Prop() + tagId: string; + + private i18n: (resourceKey: string, context?: any) => string; + + private handlerClickDeleteTag(): void { + this.deleteTag.emit(this.tagId); + } + + private getDeleteButton() { + return ( + + ); + } + + async componentWillRender() { + this.i18n = await buildI18nForComponent(this.root, tagResources); + } + + render() { + return ( +
+
+ +
+ {this.getDeleteButton()} +
+ ); + } +} diff --git a/src/components/beta/gux-tag/i18n/en.json b/src/components/beta/gux-tag/i18n/en.json new file mode 100644 index 0000000000..8da02f1408 --- /dev/null +++ b/src/components/beta/gux-tag/i18n/en.json @@ -0,0 +1,3 @@ +{ + "delete-tag": "Delete tag" +} diff --git a/src/components/beta/gux-tag/readme.md b/src/components/beta/gux-tag/readme.md new file mode 100644 index 0000000000..b13f1034f8 --- /dev/null +++ b/src/components/beta/gux-tag/readme.md @@ -0,0 +1,41 @@ +# gux-tag + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| -------- | --------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- | +| `color` | `color` | Tag background color. | `"aqua-green" \| "blue" \| "bubblegum-pink" \| "dark-purple" \| "electric-purple" \| "fuscha" \| "lilac" \| "navy" \| "olive-green" \| "yellow-green"` | `undefined` | +| `tagId` | `tag-id` | Index for remove tag | `string` | `undefined` | + + +## Events + +| Event | Description | Type | +| ----------- | ------------------------------------ | ------------------ | +| `deleteTag` | Triggered when click on close button | `CustomEvent` | + + +## Dependencies + +### Used by + + - [gux-tag-popover-beta](../gux-tag-popover) + +### Depends on + +- [gux-icon](../../stable/gux-icon) + +### Graph +```mermaid +graph TD; + gux-tag-beta --> gux-icon + gux-tag-popover-beta --> gux-tag-beta + style gux-tag-beta fill:#f9f,stroke:#333,stroke-width:4px +``` + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/src/components/beta/gux-tag/tests/__snapshots__/gux-tag.spec.ts.snap b/src/components/beta/gux-tag/tests/__snapshots__/gux-tag.spec.ts.snap new file mode 100644 index 0000000000..3c848e3acf --- /dev/null +++ b/src/components/beta/gux-tag/tests/__snapshots__/gux-tag.spec.ts.snap @@ -0,0 +1,13 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`gux-tag-beta should render 1`] = ` + + +
+
+ +
+
+`; diff --git a/src/components/beta/gux-tag/tests/gux-tag.e2e.ts b/src/components/beta/gux-tag/tests/gux-tag.e2e.ts new file mode 100644 index 0000000000..5c869b1243 --- /dev/null +++ b/src/components/beta/gux-tag/tests/gux-tag.e2e.ts @@ -0,0 +1,11 @@ +import { newE2EPage } from '@stencil/core/testing'; + +describe('gux-tag-beta', () => { + it('renders', async () => { + const page = await newE2EPage(); + + await page.setContent(''); + const element = await page.find('gux-tag-beta'); + expect(element).toHaveClass('hydrated'); + }); +}); diff --git a/src/components/beta/gux-tag/tests/gux-tag.spec.ts b/src/components/beta/gux-tag/tests/gux-tag.spec.ts new file mode 100644 index 0000000000..90cc00672a --- /dev/null +++ b/src/components/beta/gux-tag/tests/gux-tag.spec.ts @@ -0,0 +1,16 @@ +import { newSpecPage } from '@stencil/core/testing'; +import { GuxTag } from '../gux-tag'; + +describe('gux-tag-beta', () => { + it('should render', async () => { + const page = await newSpecPage({ + components: [GuxTag], + html: ` + + `, + language: 'en' + }); + + expect(page.root).toMatchSnapshot(); + }); +}); diff --git a/src/components/stable/gux-button/readme.md b/src/components/stable/gux-button/readme.md index 92c7ffc7cf..ec06c237ba 100644 --- a/src/components/stable/gux-button/readme.md +++ b/src/components/stable/gux-button/readme.md @@ -21,12 +21,14 @@ You can choose between two type (secondary and primary). - [gux-action-button](../gux-action-button) - [gux-pagination-buttons](../gux-pagination/gux-pagination-buttons) + - [gux-tag-popover-beta](../../beta/gux-tag-popover) ### Graph ```mermaid graph TD; gux-action-button --> gux-button gux-pagination-buttons --> gux-button + gux-tag-popover-beta --> gux-button style gux-button fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/src/components/stable/gux-dropdown/gux-option/readme.md b/src/components/stable/gux-dropdown/gux-option/readme.md index 7bdac27bb9..a7c099fea2 100644 --- a/src/components/stable/gux-dropdown/gux-option/readme.md +++ b/src/components/stable/gux-dropdown/gux-option/readme.md @@ -32,6 +32,7 @@ Type: `Promise` ### Used by - [gux-pagination-items-per-page](../../gux-pagination/gux-pagination-items-per-page) + - [gux-tag-popover-beta](../../../beta/gux-tag-popover) ### Depends on @@ -42,6 +43,7 @@ Type: `Promise` graph TD; gux-option --> gux-text-highlight gux-pagination-items-per-page --> gux-option + gux-tag-popover-beta --> gux-option style gux-option fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/src/components/stable/gux-dropdown/readme.md b/src/components/stable/gux-dropdown/readme.md index bce5f79ad4..54149f2b5b 100644 --- a/src/components/stable/gux-dropdown/readme.md +++ b/src/components/stable/gux-dropdown/readme.md @@ -41,6 +41,7 @@ Type: `Promise` ### Used by - [gux-pagination-items-per-page](../gux-pagination/gux-pagination-items-per-page) + - [gux-tag-popover-beta](../../beta/gux-tag-popover) ### Depends on @@ -54,6 +55,7 @@ graph TD; gux-dropdown --> gux-icon gux-text-field --> gux-icon gux-pagination-items-per-page --> gux-dropdown + gux-tag-popover-beta --> gux-dropdown style gux-dropdown fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/src/components/stable/gux-icon/readme.md b/src/components/stable/gux-icon/readme.md index efc2443d50..061ae1d9f1 100644 --- a/src/components/stable/gux-icon/readme.md +++ b/src/components/stable/gux-icon/readme.md @@ -41,6 +41,8 @@ - [gux-tab-dropdown-option](../../beta/gux-tabs/gux-tab-dropdown-option) - [gux-table-beta](../../beta/gux-table) - [gux-tabs-beta](../../beta/gux-tabs) + - [gux-tag-beta](../../beta/gux-tag) + - [gux-tag-popover-beta](../../beta/gux-tag-popover) - [gux-text-field](../gux-text-field) ### Graph @@ -69,6 +71,8 @@ graph TD; gux-tab-dropdown-option --> gux-icon gux-table-beta --> gux-icon gux-tabs-beta --> gux-icon + gux-tag-beta --> gux-icon + gux-tag-popover-beta --> gux-icon gux-text-field --> gux-icon style gux-icon fill:#f9f,stroke:#333,stroke-width:4px ```