kemet-ui 3.0.0 → 3.0.1
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/custom-elements.json +657 -715
- package/dist/components/kemet-accordion/kemet-accordion-panel.d.ts +2 -2
- package/dist/components/kemet-accordion/kemet-accordion-panel.js +1 -1
- package/dist/components/kemet-accordion/kemet-accordion-panel.js.map +1 -1
- package/dist/components/kemet-accordion/kemet-accordion.d.ts +3 -3
- package/dist/components/kemet-accordion/kemet-accordion.js +2 -1
- package/dist/components/kemet-accordion/kemet-accordion.js.map +1 -1
- package/dist/components/kemet-alert/kemet-alert.d.ts +2 -2
- package/dist/components/kemet-alert/kemet-alert.js.map +1 -1
- package/dist/components/kemet-badge/kemet-badge.js.map +1 -1
- package/dist/components/kemet-button/kemet-button.d.ts +2 -2
- package/dist/components/kemet-button/kemet-button.js +1 -1
- package/dist/components/kemet-button/kemet-button.js.map +1 -1
- package/dist/components/kemet-card/kemet-card.d.ts +1 -1
- package/dist/components/kemet-card/kemet-card.js +1 -1
- package/dist/components/kemet-card/kemet-card.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-current.d.ts +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-current.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-last.d.ts +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-last.js +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-last.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel.d.ts +18 -14
- package/dist/components/kemet-carousel/kemet-carousel.js +32 -13
- package/dist/components/kemet-carousel/kemet-carousel.js.map +1 -1
- package/dist/components/kemet-checkbox/kemet-checkbox.d.ts +4 -4
- package/dist/components/kemet-checkbox/kemet-checkbox.js +4 -4
- package/dist/components/kemet-checkbox/kemet-checkbox.js.map +1 -1
- package/dist/components/kemet-combo/kemet-combo.d.ts +8 -8
- package/dist/components/kemet-combo/kemet-combo.js +13 -17
- package/dist/components/kemet-combo/kemet-combo.js.map +1 -1
- package/dist/components/kemet-count/kemet-count.d.ts +1 -1
- package/dist/components/kemet-count/kemet-count.js +1 -1
- package/dist/components/kemet-count/kemet-count.js.map +1 -1
- package/dist/components/kemet-draggable/kemet-draggable.d.ts +3 -3
- package/dist/components/kemet-draggable/kemet-draggable.js +6 -5
- package/dist/components/kemet-draggable/kemet-draggable.js.map +1 -1
- package/dist/components/kemet-drawer/kemet-drawer.d.ts +2 -2
- package/dist/components/kemet-drawer/kemet-drawer.js +2 -2
- package/dist/components/kemet-drawer/kemet-drawer.js.map +1 -1
- package/dist/components/kemet-drawer/styles.js +1 -0
- package/dist/components/kemet-drawer/styles.js.map +1 -1
- package/dist/components/kemet-fab/kemet-fab.d.ts +1 -1
- package/dist/components/kemet-fab/kemet-fab.js +1 -1
- package/dist/components/kemet-fab/kemet-fab.js.map +1 -1
- package/dist/components/kemet-field/kemet-field.d.ts +7 -7
- package/dist/components/kemet-field/kemet-field.js +9 -14
- package/dist/components/kemet-field/kemet-field.js.map +1 -1
- package/dist/components/kemet-flipcard/kemet-flipcard-trigger.d.ts +1 -1
- package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js +2 -3
- package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js.map +1 -1
- package/dist/components/kemet-flipcard/kemet-flipcard.d.ts +2 -2
- package/dist/components/kemet-flipcard/kemet-flipcard.js +3 -5
- package/dist/components/kemet-flipcard/kemet-flipcard.js.map +1 -1
- package/dist/components/kemet-input/kemet-input.d.ts +3 -22
- package/dist/components/kemet-input/kemet-input.js +3 -23
- package/dist/components/kemet-input/kemet-input.js.map +1 -1
- package/dist/components/kemet-modal/kemet-modal.d.ts +4 -4
- package/dist/components/kemet-modal/kemet-modal.js +3 -3
- package/dist/components/kemet-modal/kemet-modal.js.map +1 -1
- package/dist/components/kemet-password/kemet-password.d.ts +14 -8
- package/dist/components/kemet-password/kemet-password.js +4 -33
- package/dist/components/kemet-password/kemet-password.js.map +1 -1
- package/dist/components/kemet-popper/kemet-popper-close.d.ts +1 -1
- package/dist/components/kemet-popper/kemet-popper-close.js +2 -3
- package/dist/components/kemet-popper/kemet-popper-close.js.map +1 -1
- package/dist/components/kemet-popper/kemet-popper.d.ts +18 -7
- package/dist/components/kemet-popper/kemet-popper.js +21 -25
- package/dist/components/kemet-popper/kemet-popper.js.map +1 -1
- package/dist/components/kemet-radio/kemet-radios.d.ts +5 -4
- package/dist/components/kemet-radio/kemet-radios.js +10 -4
- package/dist/components/kemet-radio/kemet-radios.js.map +1 -1
- package/dist/components/kemet-rotator/kemet-rotator.d.ts +1 -1
- package/dist/components/kemet-rotator/kemet-rotator.js +1 -2
- package/dist/components/kemet-rotator/kemet-rotator.js.map +1 -1
- package/dist/components/kemet-scroll-link/kemet-scroll-link.d.ts +2 -2
- package/dist/components/kemet-scroll-link/kemet-scroll-link.js +11 -10
- package/dist/components/kemet-scroll-link/kemet-scroll-link.js.map +1 -1
- package/dist/components/kemet-scroll-nav/kemet-scroll-nav.d.ts +2 -2
- package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js +2 -7
- package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js.map +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.d.ts +5 -4
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js.map +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.d.ts +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.js +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.js.map +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap.d.ts +3 -2
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js +2 -7
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js.map +1 -1
- package/dist/components/kemet-select/kemet-option.d.ts +1 -1
- package/dist/components/kemet-select/kemet-option.js +1 -1
- package/dist/components/kemet-select/kemet-option.js.map +1 -1
- package/dist/components/kemet-select/kemet-select.d.ts +19 -10
- package/dist/components/kemet-select/kemet-select.js +3 -44
- package/dist/components/kemet-select/kemet-select.js.map +1 -1
- package/dist/components/kemet-sortable/kemet-sortable.d.ts +5 -5
- package/dist/components/kemet-sortable/kemet-sortable.js +5 -5
- package/dist/components/kemet-sortable/kemet-sortable.js.map +1 -1
- package/dist/components/kemet-svgs/kemet-svgs.d.ts +1 -1
- package/dist/components/kemet-svgs/kemet-svgs.js +1 -1
- package/dist/components/kemet-svgs/kemet-svgs.js.map +1 -1
- package/dist/components/kemet-tabs/kemet-tab-panel.d.ts +1 -0
- package/dist/components/kemet-tabs/kemet-tab-panel.js +3 -0
- package/dist/components/kemet-tabs/kemet-tab-panel.js.map +1 -1
- package/dist/components/kemet-tabs/kemet-tab.d.ts +1 -0
- package/dist/components/kemet-tabs/kemet-tab.js +4 -1
- package/dist/components/kemet-tabs/kemet-tab.js.map +1 -1
- package/dist/components/kemet-tabs/kemet-tabs.d.ts +23 -14
- package/dist/components/kemet-tabs/kemet-tabs.js +3 -47
- package/dist/components/kemet-tabs/kemet-tabs.js.map +1 -1
- package/dist/components/kemet-textarea/kemet-textarea.js.map +1 -1
- package/dist/components/kemet-toggle/kemet-toggle.d.ts +3 -3
- package/dist/components/kemet-toggle/kemet-toggle.js +3 -3
- package/dist/components/kemet-toggle/kemet-toggle.js.map +1 -1
- package/dist/components/kemet-tooltip/kemet-tooltip.d.ts +2 -2
- package/dist/components/kemet-tooltip/kemet-tooltip.js +13 -12
- package/dist/components/kemet-tooltip/kemet-tooltip.js.map +1 -1
- package/dist/components/kemet-tracker/kemet-tracker-step.d.ts +2 -2
- package/dist/components/kemet-tracker/kemet-tracker-step.js +2 -2
- package/dist/components/kemet-tracker/kemet-tracker-step.js.map +1 -1
- package/dist/components/kemet-tracker/kemet-tracker.d.ts +2 -1
- package/dist/components/kemet-tracker/kemet-tracker.js.map +1 -1
- package/dist/components/kemet-upload/kemet-upload-file.js +1 -2
- package/dist/components/kemet-upload/kemet-upload-file.js.map +1 -1
- package/dist/components/kemet-upload/kemet-upload.d.ts +3 -3
- package/dist/components/kemet-upload/kemet-upload.js +3 -8
- package/dist/components/kemet-upload/kemet-upload.js.map +1 -1
- package/dist/kemet-components.bundle.js +98 -86
- package/dist/kemet-components.bundle.js.map +1 -1
- package/dist/kemet-components.cjs +8680 -8803
- package/dist/kemet-components.js +8680 -8803
- package/dist/styles/kemet.core.css +1 -561
- package/dist/styles/kemet.core.css.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -3
|
@@ -4,46 +4,6 @@ import { customElement, property, state } from 'lit/decorators.js';
|
|
|
4
4
|
import { FormSubmitController } from '../../utilities/controllers/forms';
|
|
5
5
|
import { emitEvent } from '../../utilities/misc/events';
|
|
6
6
|
import { stylesSelect } from './styles';
|
|
7
|
-
/**
|
|
8
|
-
* @since 1.0.0
|
|
9
|
-
* @status stable
|
|
10
|
-
*
|
|
11
|
-
* @tagname kemet-select
|
|
12
|
-
* @summary An enhanced select element.
|
|
13
|
-
*
|
|
14
|
-
* @prop {string} slug - A string the uniquely identifies the select
|
|
15
|
-
* @prop {string} name - The name of the select
|
|
16
|
-
* @prop {string} value - The value of the select
|
|
17
|
-
* @prop {array} options - The options the select contains
|
|
18
|
-
* @prop {string} status - The status of the select
|
|
19
|
-
* @prop {boolean} required - Determines whether or not the field is required
|
|
20
|
-
* @prop {boolean} disabled - Determines whether or not the field is disabled
|
|
21
|
-
* @prop {boolean} multiple - Support of multiple choice selections
|
|
22
|
-
* @prop {string} icon - The dropdown icon
|
|
23
|
-
* @prop {number} iconSize - The dropdown icon size
|
|
24
|
-
* @prop {boolean} filled - Displays a filled select
|
|
25
|
-
* @prop {boolean} rounded - Displays rounded corners
|
|
26
|
-
*
|
|
27
|
-
* @csspart select
|
|
28
|
-
*
|
|
29
|
-
* @cssproperty --kemet-select-padding - The padding on the textarea.
|
|
30
|
-
* @cssproperty --kemet-select-border - The border of the textarea.
|
|
31
|
-
* @cssproperty --kemet-select-border-color-error - The border of the error state.
|
|
32
|
-
* @cssproperty --kemet-select-border-color-success - The border of the success state.
|
|
33
|
-
* @cssproperty --kemet-select-border-color-warning - The border of the warning state.
|
|
34
|
-
* @cssproperty --kemet-select-border-radius-rounded - The border radius on rounded.
|
|
35
|
-
* @cssproperty --kemet-select-border-filled - The border on filled.
|
|
36
|
-
* @cssproperty --kemet-select-color-filled - The color on filled.
|
|
37
|
-
* @cssproperty --kemet-select-background-color-filled - The background-color on filled.
|
|
38
|
-
* @cssproperty --kemet-select-background-color-error - The error state background color.
|
|
39
|
-
* @cssproperty --kemet-select-background-color-success - The success state background color.
|
|
40
|
-
* @cssproperty --kemet-select-background-color-warning - The warning state background color.
|
|
41
|
-
* @cssproperty --kemet-select-icon-right - The space on the right of the icon.
|
|
42
|
-
*
|
|
43
|
-
* @event kemet-input-focused - Fires when the input receives and loses focus
|
|
44
|
-
* @event kemet-input-status - Fires when there's a change in status
|
|
45
|
-
*
|
|
46
|
-
*/
|
|
47
7
|
let KemetSelect = class KemetSelect extends LitElement {
|
|
48
8
|
constructor() {
|
|
49
9
|
super();
|
|
@@ -89,8 +49,6 @@ let KemetSelect = class KemetSelect extends LitElement {
|
|
|
89
49
|
this.options = [];
|
|
90
50
|
this.optionElements = this.querySelectorAll('kemet-option');
|
|
91
51
|
this.optionElements.forEach((option) => {
|
|
92
|
-
// if (index === 0) this.value = option.value;
|
|
93
|
-
// this.value = option.selected ? option.value : this.value;
|
|
94
52
|
this.options = this.options.concat({
|
|
95
53
|
label: option.label,
|
|
96
54
|
value: option.value,
|
|
@@ -103,7 +61,7 @@ let KemetSelect = class KemetSelect extends LitElement {
|
|
|
103
61
|
</option>`);
|
|
104
62
|
}
|
|
105
63
|
/**
|
|
106
|
-
* Generates
|
|
64
|
+
* Generates a dropdown icon
|
|
107
65
|
* @private
|
|
108
66
|
*/
|
|
109
67
|
makeIcon() {
|
|
@@ -145,6 +103,7 @@ let KemetSelect = class KemetSelect extends LitElement {
|
|
|
145
103
|
*/
|
|
146
104
|
handleChange() {
|
|
147
105
|
this.value = this.select.value;
|
|
106
|
+
emitEvent(this, 'kemet-input-change', this.value);
|
|
148
107
|
if (this.select.checkValidity()) {
|
|
149
108
|
this.invalid = false;
|
|
150
109
|
this.status = 'standard';
|
|
@@ -174,7 +133,7 @@ let KemetSelect = class KemetSelect extends LitElement {
|
|
|
174
133
|
* @returns {boolean}
|
|
175
134
|
*/
|
|
176
135
|
checkValidity() {
|
|
177
|
-
this.select.checkValidity();
|
|
136
|
+
return this.select.checkValidity();
|
|
178
137
|
}
|
|
179
138
|
};
|
|
180
139
|
KemetSelect.styles = [stylesSelect];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kemet-select.js","sourceRoot":"","sources":["../../../src/components/kemet-select/kemet-select.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, css, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { FormSubmitController } from '../../utilities/controllers/forms';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { KemetFieldInterface } from '../kemet-field/types';\nimport { stylesSelect } from './styles';\nimport { KemetOptionInterface } from './types';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-select\n * @summary An enhanced select element.\n *\n * @prop {string} slug - A string the uniquely identifies the select\n * @prop {string} name - The name of the select\n * @prop {string} value - The value of the select\n * @prop {array} options - The options the select contains\n * @prop {string} status - The status of the select\n * @prop {boolean} required - Determines whether or not the field is required\n * @prop {boolean} disabled - Determines whether or not the field is disabled\n * @prop {boolean} multiple - Support of multiple choice selections\n * @prop {string} icon - The dropdown icon\n * @prop {number} iconSize - The dropdown icon size\n * @prop {boolean} filled - Displays a filled select\n * @prop {boolean} rounded - Displays rounded corners\n *\n * @csspart select\n *\n * @cssproperty --kemet-select-padding - The padding on the textarea.\n * @cssproperty --kemet-select-border - The border of the textarea.\n * @cssproperty --kemet-select-border-color-error - The border of the error state.\n * @cssproperty --kemet-select-border-color-success - The border of the success state.\n * @cssproperty --kemet-select-border-color-warning - The border of the warning state.\n * @cssproperty --kemet-select-border-radius-rounded - The border radius on rounded.\n * @cssproperty --kemet-select-border-filled - The border on filled.\n * @cssproperty --kemet-select-color-filled - The color on filled.\n * @cssproperty --kemet-select-background-color-filled - The background-color on filled.\n * @cssproperty --kemet-select-background-color-error - The error state background color.\n * @cssproperty --kemet-select-background-color-success - The success state background color.\n * @cssproperty --kemet-select-background-color-warning - The warning state background color.\n * @cssproperty --kemet-select-icon-right - The space on the right of the icon.\n *\n * @event kemet-input-focused - Fires when the input receives and loses focus\n * @event kemet-input-status - Fires when there's a change in status\n *\n */\n\n@customElement('kemet-select')\nexport default class KemetSelect extends LitElement {\n formSubmitController: FormSubmitController;\n\n static styles = [stylesSelect];\n\n @property({ type: String })\n slug: string;\n\n @property({ type: String })\n name: string = 'select';\n\n @property({ type: String })\n value: string;\n\n @property({ type: Array })\n options: any[];\n\n @property({ type: String, reflect: true })\n status: string;\n\n @property({ type: Boolean, reflect: true })\n required: boolean;\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean;\n\n @property({ type: Boolean })\n multiple: boolean;\n\n @property({ type: String })\n icon: string = 'chevron-down';\n\n @property({ type: Number, attribute: 'icon-size' })\n iconSize: number = 16;\n\n @property({ type: Boolean, reflect: true })\n filled: boolean;\n\n @property({ type: Boolean, reflect: true })\n rounded: boolean;\n\n @state()\n invalid: boolean;\n\n @state()\n control: KemetFieldInterface;\n\n @state()\n select: HTMLSelectElement;\n\n @state()\n selectedOption: HTMLOptionElement;\n\n @state()\n optionElements: any;\n\n @state()\n hasFocus: boolean;\n\n constructor() {\n super();\n\n /** @internal */\n this.formSubmitController = new FormSubmitController(this);\n\n /** @internal */\n this.control = this.closest('kemet-field');\n }\n\n firstUpdated() {\n this.select = this.shadowRoot.querySelector('select');\n this.selectedOption = this.querySelector('[selected]');\n this.value = this.selectedOption ? this.selectedOption.value : '';\n }\n\n render() {\n return html`\n <select\n part=\"select\"\n id=${this.slug}\n name=${this.name}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?multiple=${this.multiple}\n @change=${this.handleChange}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}\n @invalid=${this.handleInvalid}\n >\n ${this.makeOptions()}\n </select>\n ${this.makeIcon()}\n <slot @slotchange=${() => this.makeOptions()}></slot>\n `;\n }\n\n /**\n * Generates the option elements\n * @private\n * @returns {TemplateResult} An option element\n */\n makeOptions() {\n this.options = [];\n this.optionElements = this.querySelectorAll('kemet-option');\n\n this.optionElements.forEach((option) => {\n // if (index === 0) this.value = option.value;\n // this.value = option.selected ? option.value : this.value;\n this.options = this.options.concat({\n label: option.label,\n value: option.value,\n disabled: option.disabled,\n selected: option.selected,\n });\n });\n\n return this.options.map(\n option => html`<option value=${option.value} ?disabled=${option.disabled} ?selected=${option.selected}>\n ${option.label}\n </option>`,\n );\n }\n\n /**\n * Generates an dropdown icon\n * @private\n */\n makeIcon() {\n if (this.icon || this.icon !== '') {\n return html`<kemet-icon icon=${this.icon} size=${this.iconSize}></kemet-icon>`;\n }\n\n return null;\n }\n\n /**\n * Handles when the input receives focus\n * @private\n */\n handleFocus() {\n this.hasFocus = true;\n emitEvent(this, 'kemet-input-focused', true);\n }\n\n /**\n * Handles when the input loses focus\n * @private\n */\n handleBlur() {\n this.hasFocus = false;\n emitEvent(this, 'kemet-input-focused', false);\n\n this.select.checkValidity();\n\n if (!this.select.checkValidity()) {\n this.invalid = true;\n this.status = 'error';\n this.control.status = 'error';\n\n emitEvent(this, 'kemet-input-status', {\n status: 'error',\n validity: this.select.validity,\n element: this,\n });\n }\n }\n\n /**\n * Handles when the input changes value\n * @private\n */\n handleChange() {\n this.value = this.select.value;\n\n if (this.select.checkValidity()) {\n this.invalid = false;\n this.status = 'standard';\n\n emitEvent(this, 'kemet-input-status', {\n status: 'standard',\n validity: this.select.validity,\n element: this,\n });\n }\n }\n\n /**\n * Handles when the input has an error\n * @private\n */\n handleInvalid() {\n this.invalid = true;\n this.status = 'error';\n\n emitEvent(this, 'kemet-input-status', {\n status: 'error',\n validity: this.select.validity,\n element: this,\n });\n }\n\n /**\n * Checks the validity of the standard select\n * @public\n * @returns {boolean}\n */\n checkValidity() {\n this.select.checkValidity();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-select': KemetSelect\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"kemet-select.js","sourceRoot":"","sources":["../../../src/components/kemet-select/kemet-select.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { FormSubmitController } from '../../utilities/controllers/forms';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { KemetFieldInterface } from '../kemet-field/types';\nimport { stylesSelect } from './styles';\n\nimport type KemetOption from './kemet-option';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-select\n * @summary An enhanced select element.\n *\n * @prop {string} slug - A string the uniquely identifies the select\n * @prop {string} name - The name of the select\n * @prop {string} value - The value of the select\n * @prop {array} options - The options the select contains\n * @prop {string} status - The status of the select\n * @prop {boolean} required - Determines whether the field is required\n * @prop {boolean} disabled - Determines whether the field is disabled\n * @prop {boolean} multiple - Support of multiple choice selections\n * @prop {string} icon - The dropdown icon\n * @prop {number} iconSize - The dropdown icon size\n * @prop {boolean} filled - Displays a filled select\n * @prop {boolean} rounded - Displays rounded corners\n *\n * @csspart select\n *\n * @cssproperty --kemet-select-padding - The padding on the textarea.\n * @cssproperty --kemet-select-border - The border of the textarea.\n * @cssproperty --kemet-select-border-color-error - The border of the error state.\n * @cssproperty --kemet-select-border-color-success - The border of the success state.\n * @cssproperty --kemet-select-border-color-warning - The border of the warning state.\n * @cssproperty --kemet-select-border-radius-rounded - The border radius on rounded.\n * @cssproperty --kemet-select-border-filled - The border on filled.\n * @cssproperty --kemet-select-color-filled - The color on filled.\n * @cssproperty --kemet-select-background-color-filled - The background-color on filled.\n * @cssproperty --kemet-select-background-color-error - The error state background color.\n * @cssproperty --kemet-select-background-color-success - The success state background color.\n * @cssproperty --kemet-select-background-color-warning - The warning state background color.\n * @cssproperty --kemet-select-icon-right - The space on the right of the icon.\n *\n * @event kemet-input-focused - Fires when the input receives and loses focus\n * @event kemet-input-status - Fires when there's a change in status\n * @event kemet-input-change - Fires when the select input changes\n *\n */\n\ninterface IOptions {\n label: string;\n value: string;\n disabled: boolean;\n selected: boolean;\n}\n\n@customElement('kemet-select')\nexport default class KemetSelect extends LitElement {\n formSubmitController: FormSubmitController;\n\n static styles = [stylesSelect];\n\n @property({ type: String })\n slug: string;\n\n @property({ type: String })\n name: string = 'select';\n\n @property({ type: String })\n value: string;\n\n @property({ type: Array })\n options: IOptions[];\n\n @property({ type: String, reflect: true })\n status: string;\n\n @property({ type: Boolean, reflect: true })\n required: boolean;\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean;\n\n @property({ type: Boolean })\n multiple: boolean;\n\n @property({ type: String })\n icon: string = 'chevron-down';\n\n @property({ type: Number, attribute: 'icon-size' })\n iconSize: number = 16;\n\n @property({ type: Boolean, reflect: true })\n filled: boolean;\n\n @property({ type: Boolean, reflect: true })\n rounded: boolean;\n\n @state()\n invalid: boolean;\n\n @state()\n control: KemetFieldInterface;\n\n @state()\n select: HTMLSelectElement;\n\n @state()\n selectedOption: HTMLOptionElement;\n\n @state()\n optionElements: NodeListOf<KemetOption>;\n\n @state()\n hasFocus: boolean;\n\n constructor() {\n super();\n\n /** @internal */\n this.formSubmitController = new FormSubmitController(this);\n\n /** @internal */\n this.control = this.closest('kemet-field');\n }\n\n firstUpdated() {\n this.select = this.shadowRoot.querySelector('select');\n this.selectedOption = this.querySelector('[selected]');\n this.value = this.selectedOption ? this.selectedOption.value : '';\n }\n\n render() {\n return html`\n <select\n part=\"select\"\n id=${this.slug}\n name=${this.name}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?multiple=${this.multiple}\n @change=${this.handleChange}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}\n @invalid=${this.handleInvalid}\n >\n ${this.makeOptions()}\n </select>\n ${this.makeIcon()}\n <slot @slotchange=${() => this.makeOptions()}></slot>\n `;\n }\n\n /**\n * Generates the option elements\n * @private\n * @returns {TemplateResult} An option element\n */\n makeOptions(): TemplateResult<1>[] {\n this.options = [];\n this.optionElements = this.querySelectorAll('kemet-option');\n\n this.optionElements.forEach((option: KemetOption) => {\n this.options = this.options.concat({\n label: option.label,\n value: option.value,\n disabled: option.disabled,\n selected: option.selected,\n });\n });\n\n return this.options.map(\n option => html`<option value=${option.value} ?disabled=${option.disabled} ?selected=${option.selected}>\n ${option.label}\n </option>`,\n );\n }\n\n /**\n * Generates a dropdown icon\n * @private\n */\n makeIcon() {\n if (this.icon || this.icon !== '') {\n return html`<kemet-icon icon=${this.icon} size=${this.iconSize}></kemet-icon>`;\n }\n\n return null;\n }\n\n /**\n * Handles when the input receives focus\n * @private\n */\n handleFocus() {\n this.hasFocus = true;\n emitEvent(this, 'kemet-input-focused', true);\n }\n\n /**\n * Handles when the input loses focus\n * @private\n */\n handleBlur() {\n this.hasFocus = false;\n emitEvent(this, 'kemet-input-focused', false);\n\n this.select.checkValidity();\n\n if (!this.select.checkValidity()) {\n this.invalid = true;\n this.status = 'error';\n this.control.status = 'error';\n\n emitEvent(this, 'kemet-input-status', {\n status: 'error',\n validity: this.select.validity,\n element: this,\n });\n }\n }\n\n /**\n * Handles when the input changes value\n * @private\n */\n handleChange() {\n this.value = this.select.value;\n emitEvent(this, 'kemet-input-change', this.value);\n\n if (this.select.checkValidity()) {\n this.invalid = false;\n this.status = 'standard';\n\n emitEvent(this, 'kemet-input-status', {\n status: 'standard',\n validity: this.select.validity,\n element: this,\n });\n }\n }\n\n /**\n * Handles when the input has an error\n * @private\n */\n handleInvalid() {\n this.invalid = true;\n this.status = 'error';\n\n emitEvent(this, 'kemet-input-status', {\n status: 'error',\n validity: this.select.validity,\n element: this,\n });\n }\n\n /**\n * Checks the validity of the standard select\n * @public\n * @returns {boolean}\n */\n checkValidity(): boolean {\n return this.select.checkValidity();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-select': KemetSelect\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
|
-
import
|
|
2
|
+
import type KemetSortableItem from './kemet-sortable-item';
|
|
3
3
|
/**
|
|
4
4
|
* @since 1.3.0
|
|
5
5
|
* @status stable
|
|
@@ -11,12 +11,12 @@ import { KemetSortableItemInterface } from './types';
|
|
|
11
11
|
*/
|
|
12
12
|
export default class KemetSortable extends LitElement {
|
|
13
13
|
static styles: import("lit").CSSResult[];
|
|
14
|
-
sortableItem:
|
|
14
|
+
sortableItem: KemetSortableItem;
|
|
15
15
|
firstUpdated(): void;
|
|
16
16
|
render(): import("lit-html").TemplateResult<1>;
|
|
17
|
-
handleDragStart(event:
|
|
18
|
-
handleDragOver(event:
|
|
19
|
-
handleDragEnd(event:
|
|
17
|
+
handleDragStart(event: DragEvent): void;
|
|
18
|
+
handleDragOver(event: DragEvent): void;
|
|
19
|
+
handleDragEnd(event: DragEvent): void;
|
|
20
20
|
}
|
|
21
21
|
declare global {
|
|
22
22
|
interface HTMLElementTagNameMap {
|
|
@@ -5,12 +5,12 @@ import { polyfill } from 'mobile-drag-drop';
|
|
|
5
5
|
import { emitEvent } from '../../utilities/misc/events';
|
|
6
6
|
import { stylesSortable } from './styles';
|
|
7
7
|
const getMouseOffset = (event) => {
|
|
8
|
-
const
|
|
9
|
-
const
|
|
8
|
+
const target = event.target;
|
|
9
|
+
const targetRect = target.getBoundingClientRect();
|
|
10
|
+
return {
|
|
10
11
|
x: event.pageX - targetRect.left,
|
|
11
12
|
y: event.pageY - targetRect.top,
|
|
12
13
|
};
|
|
13
|
-
return offset;
|
|
14
14
|
};
|
|
15
15
|
const getElementVerticalCenter = (element) => {
|
|
16
16
|
const rect = element.getBoundingClientRect();
|
|
@@ -44,10 +44,10 @@ let KemetSortable = class KemetSortable extends LitElement {
|
|
|
44
44
|
}
|
|
45
45
|
handleDragOver(event) {
|
|
46
46
|
event.preventDefault();
|
|
47
|
-
const
|
|
47
|
+
const target = event.target;
|
|
48
48
|
if (target && target.tagName === 'KEMET-SORTABLE-ITEM') {
|
|
49
49
|
const offset = getMouseOffset(event);
|
|
50
|
-
const middleY = getElementVerticalCenter(
|
|
50
|
+
const middleY = getElementVerticalCenter(target);
|
|
51
51
|
if (offset.y > middleY) {
|
|
52
52
|
this.insertBefore(this.sortableItem, target.nextSibling);
|
|
53
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kemet-sortable.js","sourceRoot":"","sources":["../../../src/components/kemet-sortable/kemet-sortable.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,MAAM,cAAc,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"kemet-sortable.js","sourceRoot":"","sources":["../../../src/components/kemet-sortable/kemet-sortable.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, state } from 'lit/decorators.js';\nimport { polyfill } from 'mobile-drag-drop';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { stylesSortable } from './styles';\nimport type KemetSortableItem from './kemet-sortable-item';\n\nconst getMouseOffset = (event: DragEvent) => {\n const target = event.target as HTMLElement;\n const targetRect = target.getBoundingClientRect();\n return {\n x: event.pageX - targetRect.left,\n y: event.pageY - targetRect.top,\n };\n};\n\nconst getElementVerticalCenter = (element: HTMLElement) => {\n const rect = element.getBoundingClientRect();\n return (rect.bottom - rect.top) / 2;\n};\n\n/**\n * @since 1.3.0\n * @status stable\n *\n * @tagname kemet-sortable\n * @summary A list that can be sorted by drag and drop.\n *\n * @event kemet-sortable-drag-end - Fires when an item has been moved to a new spot.\n */\n\n@customElement('kemet-sortable')\nexport default class KemetSortable extends LitElement {\n static styles = [stylesSortable];\n\n @state()\n sortableItem: KemetSortableItem;\n\n firstUpdated() {\n polyfill();\n\n this.addEventListener('dragstart', event => this.handleDragStart(event), false);\n this.addEventListener('dragenter', (event) => { event.preventDefault(); });\n }\n\n render() {\n return html`<slot></slot>`;\n }\n\n handleDragStart(event: DragEvent) {\n this.sortableItem = event.target as KemetSortableItem;\n\n this.addEventListener('dragover', dragOverEvent => this.handleDragOver(dragOverEvent), false);\n this.addEventListener('dragend', dragEndEvent => this.handleDragEnd(dragEndEvent), false);\n\n setTimeout(() => {\n this.sortableItem.ghost = true;\n }, 0);\n }\n\n handleDragOver(event: DragEvent) {\n event.preventDefault();\n\n const target = event.target as KemetSortableItem;\n\n if (target && target.tagName === 'KEMET-SORTABLE-ITEM') {\n const offset = getMouseOffset(event);\n const middleY = getElementVerticalCenter(target);\n\n if (offset.y > middleY) {\n this.insertBefore(this.sortableItem, target.nextSibling);\n } else {\n this.insertBefore(this.sortableItem, target);\n }\n }\n }\n\n handleDragEnd(event: DragEvent) {\n event.preventDefault();\n this.sortableItem.ghost = false;\n\n emitEvent(this, 'kemet-sortable-drag-end', {\n event,\n current: this.sortableItem,\n all: this.querySelectorAll('kemet-sortable-item'),\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-sortable': KemetSortable\n }\n}\n"]}
|
|
@@ -4,7 +4,7 @@ import { LitElement } from 'lit';
|
|
|
4
4
|
* @status stable
|
|
5
5
|
*
|
|
6
6
|
* @tagname kemet-svgs
|
|
7
|
-
* @summary A set of SVG graphics that can be referenced
|
|
7
|
+
* @summary A set of SVG graphics that can be referenced anywhere in a page or app.
|
|
8
8
|
*
|
|
9
9
|
* @prop {string} set - Defines the name for the set of svgs.
|
|
10
10
|
*
|
|
@@ -6,7 +6,7 @@ import { customElement, property, state } from 'lit/decorators.js';
|
|
|
6
6
|
* @status stable
|
|
7
7
|
*
|
|
8
8
|
* @tagname kemet-svgs
|
|
9
|
-
* @summary A set of SVG graphics that can be referenced
|
|
9
|
+
* @summary A set of SVG graphics that can be referenced anywhere in a page or app.
|
|
10
10
|
*
|
|
11
11
|
* @prop {string} set - Defines the name for the set of svgs.
|
|
12
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kemet-svgs.js","sourceRoot":"","sources":["../../../src/components/kemet-svgs/kemet-svgs.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;;;;GASG;AAGH,IAAqB,SAAS,GAA9B,MAAqB,SAAU,SAAQ,UAAU;IAAjD;;QAQE,QAAG,GAAW,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"kemet-svgs.js","sourceRoot":"","sources":["../../../src/components/kemet-svgs/kemet-svgs.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;;;;GASG;AAGH,IAAqB,SAAS,GAA9B,MAAqB,SAAU,SAAQ,UAAU;IAAjD;;QAQE,QAAG,GAAW,MAAM,CAAC;IAyBvB,CAAC;IApBC,YAAY;QACV,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACzD,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;QAE9C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;IAED,aAAa;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAElE,IAAI,WAAW,EAAE;YACf,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;SAC5C;IACH,CAAC;CACF,CAAA;AAhCQ,gBAAM,GAAG,CAAC,GAAG,CAAA;;;;GAInB,CAAC,CAAC;AAGH;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sCACN;AAGrB;IADC,KAAK,EAAE;8CACqB;AAXV,SAAS;IAD7B,aAAa,CAAC,YAAY,CAAC;GACP,SAAS,CAiC7B;eAjCoB,SAAS","sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-svgs\n * @summary A set of SVG graphics that can be referenced anywhere in a page or app.\n *\n * @prop {string} set - Defines the name for the set of svgs.\n *\n */\n\n@customElement('kemet-svgs')\nexport default class KemetSVGs extends LitElement {\n static styles = [css`\n :host {\n display: none;\n }\n `];\n\n @property({ type: String })\n set: string = 'svgs';\n\n @state()\n slotElement: HTMLSlotElement;\n\n firstUpdated() {\n this.slotElement = this.shadowRoot.querySelector('slot');\n document.kemetSVGs = document.kemetSVGs || {};\n\n this.populateIcons();\n this.slotElement.addEventListener('slotchange', () => this.populateIcons());\n }\n\n render() {\n return html`<slot></slot>`;\n }\n\n populateIcons() {\n const svg = this.slotElement.assignedElements()[0];\n const svgContents = svg ? svg.querySelectorAll('defs > g') : null;\n\n if (svgContents) {\n document.kemetSVGs[this.set] = svgContents;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-svgs': KemetSVGs\n }\n\n interface Document {\n kemetSVGs: any;\n }\n}\n"]}
|
|
@@ -45,6 +45,9 @@ __decorate([
|
|
|
45
45
|
__decorate([
|
|
46
46
|
property({ type: String })
|
|
47
47
|
], KemetTabPanel.prototype, "panel", void 0);
|
|
48
|
+
__decorate([
|
|
49
|
+
property({ type: Number })
|
|
50
|
+
], KemetTabPanel.prototype, "index", void 0);
|
|
48
51
|
KemetTabPanel = __decorate([
|
|
49
52
|
customElement('kemet-tab-panel')
|
|
50
53
|
], KemetTabPanel);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kemet-tab-panel.js","sourceRoot":"","sources":["../../../src/components/kemet-tabs/kemet-tab-panel.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C;;;;;;;;;;;;GAYG;AAGH,IAAqB,aAAa,GAAlC,MAAqB,aAAc,SAAQ,UAAU;IAArD;;QAIE,aAAQ,GAAY,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"kemet-tab-panel.js","sourceRoot":"","sources":["../../../src/components/kemet-tabs/kemet-tab-panel.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C;;;;;;;;;;;;GAYG;AAGH,IAAqB,aAAa,GAAlC,MAAqB,aAAc,SAAQ,UAAU;IAArD;;QAIE,aAAQ,GAAY,KAAK,CAAC;IA2B5B,CAAC;IAnBC,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;KAEV,CAAC;IACJ,CAAC;IAED,IAAI;QACF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAEtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;SACpC;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;SACrC;IACH,CAAC;CACF,CAAA;AA9BQ,oBAAM,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAGtC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;+CACjB;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CACb;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CACb;AAVK,aAAa;IADjC,aAAa,CAAC,iBAAiB,CAAC;GACZ,aAAa,CA+BjC;eA/BoB,aAAa","sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { stylesKemetTabPanel } from './styles';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-tab-panel\n * @summary A panel in a set of tabs.\n *\n * @prop {boolean} selected - Is true when a panel is selected\n * @prop {string} panel - Identifies the panel to be linked by a tab\n *\n * @cssproperty --kemet-tab-panel-fade-speed - The fade speed.\n *\n */\n\n@customElement('kemet-tab-panel')\nexport default class KemetTabPanel extends LitElement {\n static styles = [stylesKemetTabPanel];\n\n @property({ type: Boolean, reflect: true })\n selected: boolean = false;\n\n @property({ type: String })\n panel: string;\n\n @property({ type: Number })\n index: number;\n\n updated() {\n this.a11y();\n }\n\n render() {\n return html`\n <slot></slot>\n `;\n }\n\n a11y() {\n this.setAttribute('role', 'tabpanel');\n\n if (this.selected) {\n this.setAttribute('tabindex', '0');\n } else {\n this.setAttribute('tabindex', '-1');\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tab-panel': KemetTabPanel\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { LitElement, html } from 'lit';
|
|
3
|
-
import { emitEvent } from '../../utilities/misc/events';
|
|
4
3
|
import { customElement, property } from 'lit/decorators.js';
|
|
4
|
+
import { emitEvent } from '../../utilities/misc/events';
|
|
5
5
|
import { stylesKemetTab } from './styles';
|
|
6
6
|
/**
|
|
7
7
|
* @since 1.0.0
|
|
@@ -63,6 +63,9 @@ let KemetTab = class KemetTab extends LitElement {
|
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
KemetTab.styles = [stylesKemetTab];
|
|
66
|
+
__decorate([
|
|
67
|
+
property({ type: Number })
|
|
68
|
+
], KemetTab.prototype, "index", void 0);
|
|
66
69
|
__decorate([
|
|
67
70
|
property({ type: Boolean, reflect: true })
|
|
68
71
|
], KemetTab.prototype, "selected", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kemet-tab.js","sourceRoot":"","sources":["../../../src/components/kemet-tabs/kemet-tab.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"kemet-tab.js","sourceRoot":"","sources":["../../../src/components/kemet-tabs/kemet-tab.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;;;;;;;;;;;;GAiBG;AAGH,IAAqB,QAAQ,GAA7B,MAAqB,QAAS,SAAQ,UAAU;IAAhD;;QAOE,aAAQ,GAAY,KAAK,CAAC;IAkD5B,CAAC;IA1CC,YAAY;QACV,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;QAEP,IAAI,CAAC,aAAa,EAAE;KACvB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,SAAS,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI;QACF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEjC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;SACpC;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;SACrC;IACH,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAA,kCAAkC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC;SAC1F;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc;QACZ,SAAS,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF,CAAA;AAxDQ,eAAM,GAAG,CAAC,cAAc,CAAC,CAAC;AAGjC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uCACb;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACjB;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sCACd;AAGb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0CACV;AAbC,QAAQ;IAD5B,aAAa,CAAC,WAAW,CAAC;GACN,QAAQ,CAyD5B;eAzDoB,QAAQ","sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { stylesKemetTab } from './styles';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-tab\n * @summary A tab in a set of tabs.\n *\n * @prop {boolean} selected - Is true when the tab is selected\n * @prop {string} link - Links to a panel name\n * @prop {boolean} closable - Determines if the tab can be closed\n *\n * @cssproperty --kemet-tab-padding - The padding of the tab.\n * @cssproperty --kemet-tab-color - The color of the selected tab.\n *\n * @event kemet-tab-selected - Fires when a tab is selected\n * @event kemet-tab-close - Fires when the tab should close\n *\n */\n\n@customElement('kemet-tab')\nexport default class KemetTab extends LitElement {\n static styles = [stylesKemetTab];\n\n @property({ type: Number })\n index: number;\n\n @property({ type: Boolean, reflect: true })\n selected: boolean = false;\n\n @property({ type: String })\n link: string;\n\n @property({ type: Boolean })\n closable: boolean;\n\n firstUpdated() {\n this.addEventListener('click', this.select.bind(this));\n }\n\n updated() {\n this.a11y();\n }\n\n render() {\n return html`\n <slot></slot>\n ${this.makeCloseable()}\n `;\n }\n\n select() {\n emitEvent(this, 'kemet-tab-selected', this);\n }\n\n a11y() {\n this.setAttribute('role', 'tab');\n\n if (this.selected) {\n this.setAttribute('aria-selected', 'true');\n this.setAttribute('tabindex', '0');\n } else {\n this.setAttribute('aria-selected', 'false');\n this.setAttribute('tabindex', '-1');\n }\n }\n\n makeCloseable() {\n if (this.closable) {\n return html`<kemet-icon icon=\"x-lg\" @click=${() => this.handleClosable()}></kemet-icon>`;\n }\n\n return null;\n }\n\n handleClosable() {\n emitEvent(this, 'kemet-tab-close', this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tab': KemetTab\n }\n}\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
2
|
import { TypePanelEffect, TypePlacement, TypeTabsAlign } from './types';
|
|
3
|
+
import type KemetTab from './kemet-tab';
|
|
4
|
+
import type KemetTabPanel from './kemet-tab-panel';
|
|
3
5
|
/**
|
|
4
6
|
* @since 1.0.0
|
|
5
7
|
* @status stable
|
|
@@ -11,12 +13,12 @@ import { TypePanelEffect, TypePlacement, TypeTabsAlign } from './types';
|
|
|
11
13
|
* @prop {number} selectedIndex - The selected tab by index
|
|
12
14
|
* @prop {number} panelPosition - Positions the current panel
|
|
13
15
|
* @prop {string} panelEffect - The transition effect for panels
|
|
14
|
-
* @prop {boolean} swipe - Determines whether
|
|
16
|
+
* @prop {boolean} swipe - Determines whether to enable swipe behavior
|
|
15
17
|
* @prop {string} placement - Places the tabs to the top, right, bottom, or left
|
|
16
|
-
* @prop {boolean} divider - Determines whether
|
|
18
|
+
* @prop {boolean} divider - Determines whether to show a divider line
|
|
17
19
|
* @prop {string} tabsAlign - Spacing alignment of the tabs
|
|
18
20
|
* @prop {object} ink - An object that contains information about the ink
|
|
19
|
-
* @prop {boolean} hideInk - Determines whether
|
|
21
|
+
* @prop {boolean} hideInk - Determines whether to hide the ink
|
|
20
22
|
* @prop {boolean} overflow - Is true when the space of the tabs is larger than it's container
|
|
21
23
|
*
|
|
22
24
|
* @slot tab - Place the tabs here.
|
|
@@ -39,6 +41,12 @@ import { TypePanelEffect, TypePlacement, TypeTabsAlign } from './types';
|
|
|
39
41
|
* @event kemet-tab-changed - Fires when a tab is changed
|
|
40
42
|
*
|
|
41
43
|
*/
|
|
44
|
+
interface Iink {
|
|
45
|
+
width: string;
|
|
46
|
+
height: string;
|
|
47
|
+
positionX: string;
|
|
48
|
+
positionY: string;
|
|
49
|
+
}
|
|
42
50
|
export default class KemetTabs extends LitElement {
|
|
43
51
|
static styles: import("lit").CSSResult[];
|
|
44
52
|
selected: string;
|
|
@@ -49,11 +57,11 @@ export default class KemetTabs extends LitElement {
|
|
|
49
57
|
placement: TypePlacement;
|
|
50
58
|
divider: boolean;
|
|
51
59
|
tabsAlign: TypeTabsAlign;
|
|
52
|
-
ink:
|
|
60
|
+
ink: Iink;
|
|
53
61
|
hideInk: boolean;
|
|
54
62
|
overflow: boolean;
|
|
55
|
-
tabs:
|
|
56
|
-
panels:
|
|
63
|
+
tabs: KemetTab[];
|
|
64
|
+
panels: KemetTabPanel[];
|
|
57
65
|
xDown: number | null;
|
|
58
66
|
yDown: number | null;
|
|
59
67
|
links: HTMLElement;
|
|
@@ -61,31 +69,32 @@ export default class KemetTabs extends LitElement {
|
|
|
61
69
|
constructor();
|
|
62
70
|
firstUpdated(): void;
|
|
63
71
|
render(): import("lit-html").TemplateResult<1>;
|
|
64
|
-
updated(prevProps:
|
|
72
|
+
updated(prevProps: Map<string, never>): void;
|
|
65
73
|
handleLinksSlotChange(): void;
|
|
66
74
|
handlePanelsSlotChange(): void;
|
|
67
75
|
handleLeftArrow(): void;
|
|
68
76
|
handleRightArrow(): void;
|
|
69
|
-
handleTabClose(event:
|
|
70
|
-
makeInk(location:
|
|
77
|
+
handleTabClose(event: CustomEvent): void;
|
|
78
|
+
makeInk(location: string): import("lit-html").TemplateResult<1>;
|
|
71
79
|
makeDivider(): import("lit-html").TemplateResult<1>;
|
|
72
80
|
makeLeftArrow(): import("lit-html").TemplateResult<1>;
|
|
73
81
|
makeRightArrow(): import("lit-html").TemplateResult<1>;
|
|
74
82
|
selectTab(): void;
|
|
75
83
|
selectPanel(): void;
|
|
76
84
|
dispatchTabChange(): void;
|
|
77
|
-
tabSelectedChange(event:
|
|
85
|
+
tabSelectedChange(event: CustomEvent): void;
|
|
78
86
|
determineFade(): void;
|
|
79
87
|
determineStacked(): void;
|
|
80
88
|
determineOverflow(): void;
|
|
81
89
|
handleResize(): void;
|
|
82
|
-
animatePanel(panelName:
|
|
83
|
-
handleTabKeydown(event:
|
|
84
|
-
handleTouchStart(event:
|
|
85
|
-
handleTouchMove(event:
|
|
90
|
+
animatePanel(panelName: string, panelIndex: number): void;
|
|
91
|
+
handleTabKeydown(event: KeyboardEvent): void;
|
|
92
|
+
handleTouchStart(event: TouchEvent): void;
|
|
93
|
+
handleTouchMove(event: TouchEvent): void;
|
|
86
94
|
}
|
|
87
95
|
declare global {
|
|
88
96
|
interface HTMLElementTagNameMap {
|
|
89
97
|
'kemet-tabs': KemetTabs;
|
|
90
98
|
}
|
|
91
99
|
}
|
|
100
|
+
export {};
|
|
@@ -2,48 +2,9 @@ import { __decorate } from "tslib";
|
|
|
2
2
|
/* eslint-disable no-lonely-if */
|
|
3
3
|
/* eslint-disable no-case-declarations */
|
|
4
4
|
import { LitElement, html } from 'lit';
|
|
5
|
-
import {
|
|
5
|
+
import { customElement, property, query, state, } from 'lit/decorators.js';
|
|
6
6
|
import { emitEvent } from '../../utilities/misc/events';
|
|
7
|
-
import {
|
|
8
|
-
/**
|
|
9
|
-
* @since 1.0.0
|
|
10
|
-
* @status stable
|
|
11
|
-
*
|
|
12
|
-
* @tagname kemet-tabs
|
|
13
|
-
* @summary A group of tabs and panels.
|
|
14
|
-
*
|
|
15
|
-
* @prop {string} selected - The selected tab by name
|
|
16
|
-
* @prop {number} selectedIndex - The selected tab by index
|
|
17
|
-
* @prop {number} panelPosition - Positions the current panel
|
|
18
|
-
* @prop {string} panelEffect - The transition effect for panels
|
|
19
|
-
* @prop {boolean} swipe - Determines whether or not to enable swipe behavior
|
|
20
|
-
* @prop {string} placement - Places the tabs to the top, right, bottom, or left
|
|
21
|
-
* @prop {boolean} divider - Determines whether or not to show a divider line
|
|
22
|
-
* @prop {string} tabsAlign - Spacing alignment of the tabs
|
|
23
|
-
* @prop {object} ink - An object that contains information about the ink
|
|
24
|
-
* @prop {boolean} hideInk - Determines whether or not to hide the ink
|
|
25
|
-
* @prop {boolean} overflow - Is true when the space of the tabs is larger than it's container
|
|
26
|
-
*
|
|
27
|
-
* @slot tab - Place the tabs here.
|
|
28
|
-
* @slot panel - Place the panels here.
|
|
29
|
-
*
|
|
30
|
-
* @csspart links - The container for the tablist.
|
|
31
|
-
* @csspart tablist - Contains the tabs.
|
|
32
|
-
* @csspart panels - Contains the panels.
|
|
33
|
-
* @csspart ink - The ink element.
|
|
34
|
-
* @csspart divider - The divider element.
|
|
35
|
-
*
|
|
36
|
-
* @cssproperty --kemet-tabs-ink-size - The thickness of the ink.
|
|
37
|
-
* @cssproperty --kemet-tabs-ink-radius - The radius on the ink.
|
|
38
|
-
* @cssproperty --kemet-tabs-ink-color - The color of the ink.
|
|
39
|
-
* @cssproperty --kemet-tabs-divider-size - The thickness of the divider.
|
|
40
|
-
* @cssproperty --kemet-tabs-divider-color - The color of the divider.
|
|
41
|
-
* @cssproperty --kemet-tabs-transition-speed - The transition speed of the panels.
|
|
42
|
-
* @cssproperty --kemet-tabs-spacer - The space between tabs and panels.
|
|
43
|
-
*
|
|
44
|
-
* @event kemet-tab-changed - Fires when a tab is changed
|
|
45
|
-
*
|
|
46
|
-
*/
|
|
7
|
+
import { stylesKemetTabs } from './styles';
|
|
47
8
|
let KemetTabs = class KemetTabs extends LitElement {
|
|
48
9
|
constructor() {
|
|
49
10
|
super();
|
|
@@ -331,12 +292,7 @@ let KemetTabs = class KemetTabs extends LitElement {
|
|
|
331
292
|
tabElements.forEach((tab) => {
|
|
332
293
|
totalTabsWidth += tab.offsetWidth;
|
|
333
294
|
});
|
|
334
|
-
|
|
335
|
-
this.overflow = true;
|
|
336
|
-
}
|
|
337
|
-
else {
|
|
338
|
-
this.overflow = false;
|
|
339
|
-
}
|
|
295
|
+
this.overflow = totalTabsWidth > tabsContainerWidth && (this.placement === 'top' || this.placement === 'bottom');
|
|
340
296
|
}
|
|
341
297
|
handleResize() {
|
|
342
298
|
if (this.tabs && this.panels) {
|