kemet-ui 3.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +995 -220
- package/dist/components/kemet-accordion/docs/stories.d.ts +12 -0
- package/dist/components/kemet-accordion/docs/stories.js +99 -0
- package/dist/components/kemet-accordion/docs/stories.js.map +1 -0
- package/dist/components/kemet-accordion/kemet-accordion-panel.js.map +1 -1
- package/dist/components/kemet-accordion/kemet-accordion.js.map +1 -1
- package/dist/components/kemet-accordion/spec.d.ts +2 -0
- package/dist/components/kemet-accordion/spec.js +132 -0
- package/dist/components/kemet-accordion/spec.js.map +1 -0
- package/dist/components/kemet-alert/docs/stories.d.ts +1 -1
- package/dist/components/kemet-alert/docs/stories.js +20 -19
- package/dist/components/kemet-alert/docs/stories.js.map +1 -1
- package/dist/components/kemet-alert/kemet-alert.js.map +1 -1
- package/dist/components/kemet-alert/spec.d.ts +1 -0
- package/dist/components/kemet-alert/spec.js +35 -0
- package/dist/components/kemet-alert/spec.js.map +1 -0
- package/dist/components/kemet-alert/types.d.ts +1 -1
- package/dist/components/kemet-avatar/docs/stories.d.ts +1 -1
- package/dist/components/kemet-avatar/docs/stories.js.map +1 -1
- package/dist/components/kemet-avatar/kemet-avatar.js.map +1 -1
- package/dist/components/kemet-avatar/kemet-avatars.js.map +1 -1
- package/dist/components/kemet-avatar/spec.d.ts +1 -0
- package/dist/components/kemet-avatar/spec.js +26 -0
- package/dist/components/kemet-avatar/spec.js.map +1 -0
- package/dist/components/kemet-badge/docs/stories.d.ts +1 -1
- package/dist/components/kemet-badge/kemet-badge.js.map +1 -1
- package/dist/components/kemet-badge/spec.d.ts +1 -0
- package/dist/components/kemet-badge/spec.js +21 -0
- package/dist/components/kemet-badge/spec.js.map +1 -0
- package/dist/components/kemet-badge/types.d.ts +1 -1
- package/dist/components/kemet-button/docs/stories.d.ts +1 -1
- package/dist/components/kemet-button/kemet-button.js +9 -7
- package/dist/components/kemet-button/kemet-button.js.map +1 -1
- package/dist/components/kemet-button/spec.d.ts +1 -0
- package/dist/components/kemet-button/spec.js +49 -0
- package/dist/components/kemet-button/spec.js.map +1 -0
- package/dist/components/kemet-button/types.d.ts +1 -1
- package/dist/components/kemet-card/docs/stories.d.ts +1 -1
- package/dist/components/kemet-card/docs/stories.js.map +1 -1
- package/dist/components/kemet-card/kemet-card.js.map +1 -1
- package/dist/components/kemet-card/spec.d.ts +1 -0
- package/dist/components/kemet-card/spec.js +31 -0
- package/dist/components/kemet-card/spec.js.map +1 -0
- package/dist/components/kemet-carousel/docs/stories.d.ts +1 -1
- package/dist/components/kemet-carousel/docs/stories.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-current.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-first.d.ts +1 -0
- package/dist/components/kemet-carousel/kemet-carousel-first.js +11 -4
- package/dist/components/kemet-carousel/kemet-carousel-first.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-last.d.ts +1 -0
- package/dist/components/kemet-carousel/kemet-carousel-last.js +11 -4
- package/dist/components/kemet-carousel/kemet-carousel-last.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-link.d.ts +1 -0
- package/dist/components/kemet-carousel/kemet-carousel-link.js +14 -4
- package/dist/components/kemet-carousel/kemet-carousel-link.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-next.d.ts +1 -0
- package/dist/components/kemet-carousel/kemet-carousel-next.js +11 -4
- package/dist/components/kemet-carousel/kemet-carousel-next.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-prev.d.ts +1 -0
- package/dist/components/kemet-carousel/kemet-carousel-prev.js +11 -4
- package/dist/components/kemet-carousel/kemet-carousel-prev.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-slide.js +5 -5
- package/dist/components/kemet-carousel/kemet-carousel-slide.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-total.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel.js.map +1 -1
- package/dist/components/kemet-carousel/spec.d.ts +10 -0
- package/dist/components/kemet-carousel/spec.js +168 -0
- package/dist/components/kemet-carousel/spec.js.map +1 -0
- package/dist/components/kemet-checkbox/docs/stories.d.ts +1 -1
- package/dist/components/kemet-checkbox/kemet-checkbox.js.map +1 -1
- package/dist/components/kemet-checkbox/spec.d.ts +1 -0
- package/dist/components/kemet-checkbox/spec.js +33 -0
- package/dist/components/kemet-checkbox/spec.js.map +1 -0
- package/dist/components/kemet-checkbox/types.d.ts +1 -1
- package/dist/components/kemet-combo/docs/stories.d.ts +1 -1
- package/dist/components/kemet-combo/kemet-combo.d.ts +1 -0
- package/dist/components/kemet-combo/kemet-combo.js +5 -0
- package/dist/components/kemet-combo/kemet-combo.js.map +1 -1
- package/dist/components/kemet-combo/spec.d.ts +3 -0
- package/dist/components/kemet-combo/spec.js +46 -0
- package/dist/components/kemet-combo/spec.js.map +1 -0
- package/dist/components/kemet-count/docs/stories.d.ts +1 -1
- package/dist/components/kemet-count/kemet-count.js.map +1 -1
- package/dist/components/kemet-count/spec.d.ts +4 -0
- package/dist/components/kemet-count/spec.js +45 -0
- package/dist/components/kemet-count/spec.js.map +1 -0
- package/dist/components/kemet-draggable/docs/stories.d.ts +1 -1
- package/dist/components/kemet-draggable/kemet-draggable.js.map +1 -1
- package/dist/components/kemet-draggable/spec.d.ts +1 -0
- package/dist/components/kemet-draggable/spec.js +30 -0
- package/dist/components/kemet-draggable/spec.js.map +1 -0
- package/dist/components/kemet-drawer/docs/stories.d.ts +1 -1
- package/dist/components/kemet-drawer/kemet-drawer.js.map +1 -1
- package/dist/components/kemet-drawer/spec.d.ts +1 -0
- package/dist/components/kemet-drawer/spec.js +21 -0
- package/dist/components/kemet-drawer/spec.js.map +1 -0
- package/dist/components/kemet-drawer/types.d.ts +2 -2
- package/dist/components/kemet-fab/docs/stories.d.ts +1 -1
- package/dist/components/kemet-fab/kemet-fab.js +3 -9
- package/dist/components/kemet-fab/kemet-fab.js.map +1 -1
- package/dist/components/kemet-fab/spec.d.ts +2 -0
- package/dist/components/kemet-fab/spec.js +43 -0
- package/dist/components/kemet-fab/spec.js.map +1 -0
- package/dist/components/kemet-field/docs/stories.d.ts +1 -1
- package/dist/components/kemet-field/kemet-field.js.map +1 -1
- package/dist/components/kemet-field/spec.d.ts +2 -0
- package/dist/components/kemet-field/spec.js +38 -0
- package/dist/components/kemet-field/spec.js.map +1 -0
- package/dist/components/kemet-field/types.d.ts +1 -1
- package/dist/components/kemet-flipcard/docs/stories.d.ts +1 -1
- package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js.map +1 -1
- package/dist/components/kemet-flipcard/kemet-flipcard.js.map +1 -1
- package/dist/components/kemet-flipcard/spec.d.ts +3 -0
- package/dist/components/kemet-flipcard/spec.js +38 -0
- package/dist/components/kemet-flipcard/spec.js.map +1 -0
- package/dist/components/kemet-icon/docs/stories.d.ts +1 -1
- package/dist/components/kemet-icon/kemet-icon.js +1 -1
- package/dist/components/kemet-icon/kemet-icon.js.map +1 -1
- package/dist/components/kemet-icon/spec.d.ts +1 -0
- package/dist/components/kemet-icon/spec.js +69 -0
- package/dist/components/kemet-icon/spec.js.map +1 -0
- package/dist/components/kemet-input/docs/stories.d.ts +1 -1
- package/dist/components/kemet-input/kemet-input.js +1 -1
- package/dist/components/kemet-input/kemet-input.js.map +1 -1
- package/dist/components/kemet-input/spec.d.ts +1 -0
- package/dist/components/kemet-input/spec.js +83 -0
- package/dist/components/kemet-input/spec.js.map +1 -0
- package/dist/components/kemet-input/types.d.ts +3 -3
- package/dist/components/kemet-modal/docs/stories.d.ts +1 -1
- package/dist/components/kemet-modal/docs/stories.js.map +1 -1
- package/dist/components/kemet-modal/kemet-modal-close.js.map +1 -1
- package/dist/components/kemet-modal/kemet-modal.js.map +1 -1
- package/dist/components/kemet-modal/types.d.ts +1 -1
- package/dist/components/kemet-multi-input/docs/stories.d.ts +8 -0
- package/dist/components/kemet-multi-input/docs/stories.js +33 -0
- package/dist/components/kemet-multi-input/docs/stories.js.map +1 -0
- package/dist/components/kemet-multi-input/kemet-multi-input.d.ts +116 -0
- package/dist/components/kemet-multi-input/kemet-multi-input.js +193 -0
- package/dist/components/kemet-multi-input/kemet-multi-input.js.map +1 -0
- package/dist/components/kemet-multi-input/styles.d.ts +1 -0
- package/dist/components/kemet-multi-input/styles.js +87 -0
- package/dist/components/kemet-multi-input/styles.js.map +1 -0
- package/dist/components/kemet-multi-input/types.d.ts +5 -0
- package/dist/components/kemet-multi-input/types.js +2 -0
- package/dist/components/kemet-multi-input/types.js.map +1 -0
- package/dist/components/kemet-password/docs/stories.d.ts +1 -1
- package/dist/components/kemet-password/kemet-password.js.map +1 -1
- package/dist/components/kemet-password/types.d.ts +1 -1
- package/dist/components/kemet-popper/docs/stories.d.ts +1 -1
- package/dist/components/kemet-popper/kemet-popper-close.js.map +1 -1
- package/dist/components/kemet-popper/kemet-popper.js.map +1 -1
- package/dist/components/kemet-popper/types.d.ts +3 -3
- package/dist/components/kemet-radio/docs/stories.d.ts +1 -1
- package/dist/components/kemet-radio/kemet-radio.js.map +1 -1
- package/dist/components/kemet-radio/kemet-radios.js.map +1 -1
- package/dist/components/kemet-radio/spec.d.ts +3 -0
- package/dist/components/kemet-radio/spec.js +67 -0
- package/dist/components/kemet-radio/spec.js.map +1 -0
- package/dist/components/kemet-radio/types.d.ts +2 -2
- package/dist/components/kemet-rotator/docs/stories.d.ts +1 -1
- package/dist/components/kemet-rotator/kemet-rotator.js.map +1 -1
- package/dist/components/kemet-rotator/types.d.ts +1 -1
- package/dist/components/kemet-scroll-link/docs/stories.d.ts +1 -1
- package/dist/components/kemet-scroll-link/kemet-scroll-link.js.map +1 -1
- package/dist/components/kemet-scroll-nav/docs/stories.d.ts +1 -1
- package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js.map +1 -1
- package/dist/components/kemet-scroll-nav/types.d.ts +1 -1
- package/dist/components/kemet-scroll-snap/docs/stories.d.ts +1 -1
- package/dist/components/kemet-scroll-snap/docs/stories.js.map +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.js.map +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js.map +1 -1
- package/dist/components/kemet-scroll-snap/types.d.ts +2 -2
- package/dist/components/kemet-select/docs/stories.d.ts +1 -1
- package/dist/components/kemet-select/kemet-option.js.map +1 -1
- package/dist/components/kemet-select/kemet-select.js.map +1 -1
- package/dist/components/kemet-select/spec.d.ts +3 -0
- package/dist/components/kemet-select/spec.js +53 -0
- package/dist/components/kemet-select/spec.js.map +1 -0
- package/dist/components/kemet-sortable/docs/stories.d.ts +1 -1
- package/dist/components/kemet-sortable/docs/stories.js.map +1 -1
- package/dist/components/kemet-sortable/kemet-sortable-item.js.map +1 -1
- package/dist/components/kemet-sortable/kemet-sortable.js.map +1 -1
- package/dist/components/kemet-svgs/docs/stories.d.ts +1 -1
- package/dist/components/kemet-svgs/docs/stories.js.map +1 -1
- package/dist/components/kemet-svgs/kemet-svg.js.map +1 -1
- package/dist/components/kemet-svgs/kemet-svgs.js.map +1 -1
- package/dist/components/kemet-tabs/docs/stories.d.ts +1 -1
- package/dist/components/kemet-tabs/docs/stories.js.map +1 -1
- package/dist/components/kemet-tabs/kemet-tab-panel.js.map +1 -1
- package/dist/components/kemet-tabs/kemet-tab.js.map +1 -1
- package/dist/components/kemet-tabs/kemet-tabs.js.map +1 -1
- package/dist/components/kemet-tabs/types.d.ts +3 -3
- package/dist/components/kemet-textarea/docs/stories.d.ts +1 -1
- package/dist/components/kemet-textarea/kemet-textarea.js.map +1 -1
- package/dist/components/kemet-textarea/spec.d.ts +3 -0
- package/dist/components/kemet-textarea/spec.js +69 -0
- package/dist/components/kemet-textarea/spec.js.map +1 -0
- package/dist/components/kemet-textarea/types.d.ts +1 -1
- package/dist/components/kemet-timer/docs/stories.d.ts +10 -0
- package/dist/components/kemet-timer/docs/stories.js +40 -0
- package/dist/components/kemet-timer/docs/stories.js.map +1 -0
- package/dist/components/kemet-timer/kemet-timer-display.d.ts +25 -0
- package/dist/components/kemet-timer/kemet-timer-display.js +65 -0
- package/dist/components/kemet-timer/kemet-timer-display.js.map +1 -0
- package/dist/components/kemet-timer/kemet-timer.d.ts +36 -0
- package/dist/components/kemet-timer/kemet-timer.js +103 -0
- package/dist/components/kemet-timer/kemet-timer.js.map +1 -0
- package/dist/components/kemet-timer/styles.d.ts +2 -0
- package/dist/components/kemet-timer/styles.js +12 -0
- package/dist/components/kemet-timer/styles.js.map +1 -0
- package/dist/components/kemet-timer/types.d.ts +1 -0
- package/dist/components/kemet-timer/types.js +2 -0
- package/dist/components/kemet-timer/types.js.map +1 -0
- package/dist/components/kemet-toggle/docs/stories.d.ts +1 -1
- package/dist/components/kemet-toggle/kemet-toggle.js.map +1 -1
- package/dist/components/kemet-toggle/spec.d.ts +1 -0
- package/dist/components/kemet-toggle/spec.js +46 -0
- package/dist/components/kemet-toggle/spec.js.map +1 -0
- package/dist/components/kemet-tooltip/docs/stories.d.ts +1 -1
- package/dist/components/kemet-tooltip/kemet-tooltip.js.map +1 -1
- package/dist/components/kemet-tooltip/types.d.ts +3 -3
- package/dist/components/kemet-tracker/docs/stories.d.ts +1 -1
- package/dist/components/kemet-tracker/docs/stories.js.map +1 -1
- package/dist/components/kemet-tracker/kemet-tracker-step.js.map +1 -1
- package/dist/components/kemet-tracker/kemet-tracker.js.map +1 -1
- package/dist/components/kemet-upload/docs/stories.d.ts +1 -1
- package/dist/components/kemet-upload/kemet-upload-file.js.map +1 -1
- package/dist/components/kemet-upload/kemet-upload.js.map +1 -1
- package/dist/kemet-components.bundle.js +16 -32
- package/dist/kemet-components.bundle.js.map +1 -1
- package/dist/kemet-components.cjs +3721 -3263
- package/dist/kemet-components.js +3721 -3263
- package/dist/styles/kemet.base.css +24 -2
- package/dist/styles/kemet.base.css.map +1 -1
- package/dist/styles/kemet.core.css +266 -2
- package/dist/styles/kemet.core.css.map +1 -1
- package/dist/styles/shared/_config.scss +25 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/controllers/forms.js +16 -18
- package/dist/utilities/controllers/forms.js.map +1 -1
- package/dist/utilities/controllers/forms.spec.d.ts +2 -0
- package/dist/utilities/controllers/forms.spec.js +36 -0
- package/dist/utilities/controllers/forms.spec.js.map +1 -0
- package/dist/utilities/misc/drag.d.ts +6 -0
- package/dist/utilities/misc/drag.js +63 -0
- package/dist/utilities/misc/drag.js.map +1 -0
- package/package.json +46 -33
- package/dist/components/kemet-accordion/stories.d.ts +0 -12
- package/dist/components/kemet-accordion/stories.js +0 -47
- package/dist/components/kemet-accordion/stories.js.map +0 -1
|
@@ -2,11 +2,10 @@ export class FormSubmitController {
|
|
|
2
2
|
constructor(host, options = undefined) {
|
|
3
3
|
(this.host = host).addController(this);
|
|
4
4
|
this.options = {
|
|
5
|
-
form:
|
|
6
|
-
name:
|
|
7
|
-
value:
|
|
8
|
-
disabled:
|
|
9
|
-
checkValidity: (input) => (typeof input.checkValidity === 'function' ? input.checkValidity() : true),
|
|
5
|
+
form: input => input.closest('form'),
|
|
6
|
+
name: input => input.name,
|
|
7
|
+
value: input => input.value,
|
|
8
|
+
disabled: input => input.disabled,
|
|
10
9
|
...options,
|
|
11
10
|
};
|
|
12
11
|
this.handleFormData = this.handleFormData.bind(this);
|
|
@@ -32,24 +31,23 @@ export class FormSubmitController {
|
|
|
32
31
|
const name = this.options.name(this.host);
|
|
33
32
|
const value = this.options.value(this.host);
|
|
34
33
|
if (!disabled && typeof name === 'string' && typeof value !== 'undefined') {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
34
|
+
// TODO recreate a scenario where value will be an array
|
|
35
|
+
// if (Array.isArray(value)) {
|
|
36
|
+
// value.forEach((val) => {
|
|
37
|
+
// event.formData?.append(name, val.toString());
|
|
38
|
+
// });
|
|
39
|
+
// } else {
|
|
40
|
+
// event.formData?.append(name, value.toString());
|
|
41
|
+
// }
|
|
42
|
+
(_a = event.formData) === null || _a === void 0 ? void 0 : _a.append(name, value.toString());
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
45
|
handleFormSubmit(event) {
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
event.stopImmediatePropagation();
|
|
47
48
|
const disabled = this.options.disabled(this.host);
|
|
48
|
-
const checkValidity = this.options.checkValidity;
|
|
49
49
|
this.form = this.options.form(this.host);
|
|
50
|
-
if (this.form && !this.form.noValidate && !disabled
|
|
51
|
-
event.preventDefault();
|
|
52
|
-
event.stopImmediatePropagation();
|
|
50
|
+
if (this.form && !this.form.noValidate && !disabled) {
|
|
53
51
|
const components = this.form.querySelectorAll('kemet-input, kemet-textarea, kemet-select, kemet-checkbox, kemet-radios');
|
|
54
52
|
components.forEach((component) => {
|
|
55
53
|
component.checkValidity();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.js","sourceRoot":"","sources":["../../../src/utilities/controllers/forms.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAoB;
|
|
1
|
+
{"version":3,"file":"forms.js","sourceRoot":"","sources":["../../../src/utilities/controllers/forms.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAoB;IAO/B,YAAY,IAAI,EAAE,OAAO,GAAG,SAAS;QACnC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;YACzB,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;YAC3B,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ;YACjC,GAAG,OAAO;SACX,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACxB,CAAC;IACH,CAAC;IAED,cAAc,CAAC,KAAK;;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1E,wDAAwD;YACxD,8BAA8B;YAC9B,6BAA6B;YAC7B,oDAAoD;YACpD,QAAQ;YACR,WAAW;YACX,oDAAoD;YACpD,IAAI;YACJ,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,KAAK;QACpB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,yEAAyE,CAAC,CAAC;YAEzH,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBAC/B,SAAS,CAAC,aAAa,EAAE,CAAC;gBAE1B,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC;oBAC/B,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC;oBAC3B,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;oBAEzB,SAAS,CAAC,aAAa,CACrB,IAAI,WAAW,CAAC,oBAAoB,EAAE;wBACpC,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE;4BACN,MAAM,EAAE,OAAO;4BACf,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;4BACtD,OAAO,EAAE,SAAS;yBACnB;qBACF,CAAC,CACH,CAAC;gBACJ,CAAC;gBAED,IAAI,SAAS,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBACpE,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC;oBAC3B,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;oBAEzB,SAAS,CAAC,aAAa,CACrB,IAAI,WAAW,CAAC,oBAAoB,EAAE;wBACpC,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE;4BACN,MAAM,EAAE,OAAO;4BACf,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;4BAC/B,OAAO,EAAE,SAAS;yBACnB;qBACF,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM;QACJ,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;CACF","sourcesContent":["export class FormSubmitController {\n host;\n\n form;\n\n options;\n\n constructor(host, options = undefined) {\n (this.host = host).addController(this);\n\n this.options = {\n form: input => input.closest('form'),\n name: input => input.name,\n value: input => input.value,\n disabled: input => input.disabled,\n ...options,\n };\n\n this.handleFormData = this.handleFormData.bind(this);\n this.handleFormSubmit = this.handleFormSubmit.bind(this);\n }\n\n hostConnected() {\n this.form = this.options.form(this.host);\n\n if (this.form) {\n this.form.addEventListener('formdata', this.handleFormData);\n this.form.addEventListener('submit', this.handleFormSubmit);\n }\n }\n\n hostDisconnected() {\n if (this.form) {\n this.form.removeEventListener('formdata', this.handleFormData);\n this.form.removeEventListener('submit', this.handleFormSubmit);\n this.form = undefined;\n }\n }\n\n handleFormData(event) {\n const disabled = this.options.disabled(this.host);\n const name = this.options.name(this.host);\n const value = this.options.value(this.host);\n\n if (!disabled && typeof name === 'string' && typeof value !== 'undefined') {\n // TODO recreate a scenario where value will be an array\n // if (Array.isArray(value)) {\n // value.forEach((val) => {\n // event.formData?.append(name, val.toString());\n // });\n // } else {\n // event.formData?.append(name, value.toString());\n // }\n event.formData?.append(name, value.toString());\n }\n }\n\n handleFormSubmit(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n const disabled = this.options.disabled(this.host);\n this.form = this.options.form(this.host);\n\n if (this.form && !this.form.noValidate && !disabled) {\n const components = this.form.querySelectorAll('kemet-input, kemet-textarea, kemet-select, kemet-checkbox, kemet-radios');\n\n components.forEach((component) => {\n component.checkValidity();\n\n if (!component.checkValidity()) {\n component.status = 'error';\n component.invalid = true;\n\n component.dispatchEvent(\n new CustomEvent('kemet-input-status', {\n bubbles: true,\n composed: true,\n detail: {\n status: 'error',\n validity: component.validity ? component.validity : {},\n element: component,\n },\n }),\n );\n }\n\n if (component.checkLimitValidity && !component.checkLimitValidity()) {\n component.status = 'error';\n component.invalid = true;\n\n component.dispatchEvent(\n new CustomEvent('kemet-input-status', {\n bubbles: true,\n composed: true,\n detail: {\n status: 'error',\n validity: { passedLimit: true },\n element: component,\n },\n }),\n );\n }\n });\n }\n }\n\n submit() {\n const button = document.createElement('button');\n\n if (this.form) {\n button.type = 'submit';\n button.style.position = 'absolute';\n button.style.width = '0';\n button.style.height = '0';\n button.style.clip = 'rect(0 0 0 0)';\n button.style.clipPath = 'inset(50%)';\n button.style.overflow = 'hidden';\n button.style.whiteSpace = 'nowrap';\n this.form.append(button);\n button.click();\n button.remove();\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* eslint-disable import/no-duplicates */
|
|
2
|
+
import { html, render } from 'lit';
|
|
3
|
+
import { expect } from '@wdio/globals';
|
|
4
|
+
import { userEvent } from '@testing-library/user-event';
|
|
5
|
+
import { fireEvent, waitFor } from '@testing-library/dom';
|
|
6
|
+
import '../../components/kemet-button/kemet-button';
|
|
7
|
+
import '../../components/kemet-input/kemet-input';
|
|
8
|
+
const templates = {
|
|
9
|
+
default: html `
|
|
10
|
+
<form>
|
|
11
|
+
<kemet-input name="input" value="input"></kemet-input>
|
|
12
|
+
<kemet-input name="no-special-characters" required pattern="^[a-zA-Z0-9]*$"></kemet-input>
|
|
13
|
+
<kemet-button>Submit</kemet-button>
|
|
14
|
+
</form>
|
|
15
|
+
`,
|
|
16
|
+
};
|
|
17
|
+
describe('Forms', () => {
|
|
18
|
+
it('simulate submitting a form with errors', async () => {
|
|
19
|
+
render(templates.default, document.body);
|
|
20
|
+
const form = document.querySelector('form');
|
|
21
|
+
const kemetButton = document.querySelector('kemet-button');
|
|
22
|
+
const noSpecialCharactersKemetInput = document.querySelector('[required]');
|
|
23
|
+
await waitFor(async () => {
|
|
24
|
+
var _a;
|
|
25
|
+
const noSpecialCharactersInput = (_a = noSpecialCharactersKemetInput === null || noSpecialCharactersKemetInput === void 0 ? void 0 : noSpecialCharactersKemetInput.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('input');
|
|
26
|
+
await userEvent.type(noSpecialCharactersInput, 'te$t');
|
|
27
|
+
await userEvent.click(kemetButton);
|
|
28
|
+
// TODO figure out why the click doesn't implicitly cover these events
|
|
29
|
+
fireEvent(form, new Event('formdata'));
|
|
30
|
+
fireEvent.submit(form);
|
|
31
|
+
expect(noSpecialCharactersKemetInput.status).toBe('error');
|
|
32
|
+
form.remove();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=forms.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms.spec.js","sourceRoot":"","sources":["../../../src/utilities/controllers/forms.spec.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,4CAA4C,CAAC;AACpD,OAAO,0CAA0C,CAAC;AAElD,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,IAAI,CAAA;;;;;;GAMZ;CACF,CAAC;AAEF,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEzC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAoB,CAAC;QAC/D,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAgB,CAAC;QAC1E,MAAM,6BAA6B,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAe,CAAC;QAEzF,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;;YACvB,MAAM,wBAAwB,GAAG,MAAA,6BAA6B,aAA7B,6BAA6B,uBAA7B,6BAA6B,CAAE,UAAU,0CAAE,aAAa,CAAC,OAAO,CAAC,CAAC;YACnG,MAAM,SAAS,CAAC,IAAI,CAAC,wBAAyB,EAAE,MAAM,CAAC,CAAC;YACxD,MAAM,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAEnC,sEAAsE;YACtE,SAAS,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;YACvC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { html, render } from 'lit';\nimport { expect } from '@wdio/globals';\nimport { userEvent } from '@testing-library/user-event';\nimport { fireEvent, waitFor } from '@testing-library/dom';\n\nimport KemetButton from '../../components/kemet-button/kemet-button';\nimport KemetInput from '../../components/kemet-input/kemet-input';\nimport '../../components/kemet-button/kemet-button';\nimport '../../components/kemet-input/kemet-input';\n\nconst templates = {\n default: html`\n <form>\n <kemet-input name=\"input\" value=\"input\"></kemet-input>\n <kemet-input name=\"no-special-characters\" required pattern=\"^[a-zA-Z0-9]*$\"></kemet-input>\n <kemet-button>Submit</kemet-button>\n </form>\n `,\n};\n\ndescribe('Forms', () => {\n it('simulate submitting a form with errors', async () => {\n render(templates.default, document.body);\n\n const form = document.querySelector('form') as HTMLFormElement;\n const kemetButton = document.querySelector('kemet-button') as KemetButton;\n const noSpecialCharactersKemetInput = document.querySelector('[required]') as KemetInput;\n\n await waitFor(async () => {\n const noSpecialCharactersInput = noSpecialCharactersKemetInput?.shadowRoot?.querySelector('input');\n await userEvent.type(noSpecialCharactersInput!, 'te$t');\n await userEvent.click(kemetButton);\n\n // TODO figure out why the click doesn't implicitly cover these events\n fireEvent(form, new Event('formdata'));\n fireEvent.submit(form);\n expect(noSpecialCharactersKemetInput.status).toBe('error');\n form.remove();\n });\n });\n});\n"]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/* eslint-disable no-await-in-loop */
|
|
2
|
+
/* eslint-disable no-plusplus */
|
|
3
|
+
import { fireEvent } from '@testing-library/dom';
|
|
4
|
+
function isElement(obj) {
|
|
5
|
+
if (typeof obj !== 'object') {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
let prototypeStr;
|
|
9
|
+
let prototype;
|
|
10
|
+
do {
|
|
11
|
+
prototype = Object.getPrototypeOf(obj);
|
|
12
|
+
// to work in iframe
|
|
13
|
+
prototypeStr = Object.prototype.toString.call(prototype);
|
|
14
|
+
// '[object Document]' is used to detect document
|
|
15
|
+
if (prototypeStr === '[object Element]'
|
|
16
|
+
|| prototypeStr === '[object Document]') {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
obj = prototype;
|
|
20
|
+
// null is the terminal of object
|
|
21
|
+
} while (prototype !== null);
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
function getElementClientCenter(element) {
|
|
25
|
+
const { left, top, width, height, } = element.getBoundingClientRect();
|
|
26
|
+
return {
|
|
27
|
+
x: left + width / 2,
|
|
28
|
+
y: top + height / 2,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const getCoords = charlie => (isElement(charlie) ? getElementClientCenter(charlie) : charlie);
|
|
32
|
+
const sleep = ms => new Promise((resolve) => {
|
|
33
|
+
setTimeout(resolve, ms);
|
|
34
|
+
});
|
|
35
|
+
export default async function drag(element, { to: inTo, delta, steps = 20, duration = 500, }) {
|
|
36
|
+
const from = getElementClientCenter(element);
|
|
37
|
+
const to = delta
|
|
38
|
+
? {
|
|
39
|
+
x: from.x + delta.x,
|
|
40
|
+
y: from.y + delta.y,
|
|
41
|
+
}
|
|
42
|
+
: getCoords(inTo);
|
|
43
|
+
const step = {
|
|
44
|
+
x: (to.x - from.x) / steps,
|
|
45
|
+
y: (to.y - from.y) / steps,
|
|
46
|
+
};
|
|
47
|
+
const current = {
|
|
48
|
+
clientX: from.x,
|
|
49
|
+
clientY: from.y,
|
|
50
|
+
};
|
|
51
|
+
fireEvent.mouseEnter(element, current);
|
|
52
|
+
fireEvent.mouseOver(element, current);
|
|
53
|
+
fireEvent.mouseMove(element, current);
|
|
54
|
+
fireEvent.mouseDown(element, current);
|
|
55
|
+
for (let i = 0; i < steps; i++) {
|
|
56
|
+
current.clientX += step.x;
|
|
57
|
+
current.clientY += step.y;
|
|
58
|
+
await sleep(duration / steps);
|
|
59
|
+
fireEvent.mouseMove(element, current);
|
|
60
|
+
}
|
|
61
|
+
fireEvent.mouseUp(element, current);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=drag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drag.js","sourceRoot":"","sources":["../../../src/utilities/misc/drag.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-await-in-loop */\n/* eslint-disable no-plusplus */\nimport { fireEvent } from '@testing-library/dom';\n\nfunction isElement(obj) {\n if (typeof obj !== 'object') {\n return false;\n }\n\n let prototypeStr; let\n prototype;\n\n do {\n prototype = Object.getPrototypeOf(obj);\n // to work in iframe\n prototypeStr = Object.prototype.toString.call(prototype);\n // '[object Document]' is used to detect document\n if (\n prototypeStr === '[object Element]'\n || prototypeStr === '[object Document]'\n ) {\n return true;\n }\n obj = prototype;\n // null is the terminal of object\n } while (prototype !== null);\n return false;\n}\n\nfunction getElementClientCenter(element) {\n const {\n left, top, width, height,\n} = element.getBoundingClientRect();\n return {\n x: left + width / 2,\n y: top + height / 2,\n };\n}\n\nconst getCoords = charlie => (isElement(charlie) ? getElementClientCenter(charlie) : charlie);\n\nconst sleep = ms => new Promise((resolve) => {\n setTimeout(resolve, ms);\n});\n\nexport default async function drag(\n element,\n {\n to: inTo, delta, steps = 20, duration = 500,\n},\n) {\n const from = getElementClientCenter(element);\n const to = delta\n ? {\n x: from.x + delta.x,\n y: from.y + delta.y,\n }\n : getCoords(inTo);\n\n const step = {\n x: (to.x - from.x) / steps,\n y: (to.y - from.y) / steps,\n };\n\n const current = {\n clientX: from.x,\n clientY: from.y,\n };\n\n fireEvent.mouseEnter(element, current);\n fireEvent.mouseOver(element, current);\n fireEvent.mouseMove(element, current);\n fireEvent.mouseDown(element, current);\n for (let i = 0; i < steps; i++) {\n current.clientX += step.x;\n current.clientY += step.y;\n await sleep(duration / steps);\n fireEvent.mouseMove(element, current);\n }\n fireEvent.mouseUp(element, current);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kemet-ui",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "A flexible blueprint system for UIs.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"watch": {
|
|
@@ -23,11 +23,15 @@
|
|
|
23
23
|
"start": "concurrently npm:storybook npm:watch",
|
|
24
24
|
"storybook": "storybook dev -p 6006",
|
|
25
25
|
"storybook:build": "storybook build",
|
|
26
|
-
"test": "
|
|
27
|
-
"test:watch": "
|
|
28
|
-
"watch": "npm-watch"
|
|
26
|
+
"test": "wdio run wdio.conf.js",
|
|
27
|
+
"test:watch": "wdio run wdio.conf.js --watch",
|
|
28
|
+
"watch": "npm-watch",
|
|
29
|
+
"chromatic": "npx chromatic --project-token=chpt_6729a2f8709640a --build-script-name=storybook:build"
|
|
30
|
+
},
|
|
31
|
+
"author": {
|
|
32
|
+
"name": "Hasani Rogers",
|
|
33
|
+
"email": "dev@hasanirogers.me"
|
|
29
34
|
},
|
|
30
|
-
"author": "Hasani Rogers <dev@hasanirogers.me>",
|
|
31
35
|
"license": "MIT",
|
|
32
36
|
"keywords": [
|
|
33
37
|
"web components",
|
|
@@ -45,68 +49,77 @@
|
|
|
45
49
|
"dependencies": {
|
|
46
50
|
"@popperjs/core": "^2.11.7",
|
|
47
51
|
"autoprefixer": "^10.4.14",
|
|
48
|
-
"lit": "^
|
|
49
|
-
"lit-html": "^2.6.1",
|
|
52
|
+
"lit": "^3.1.2",
|
|
50
53
|
"mobile-drag-drop": "2.2.0",
|
|
51
|
-
"ts-dedent": "^2.2.0"
|
|
54
|
+
"ts-dedent": "^2.2.0",
|
|
55
|
+
"tslib": "^2.7.0"
|
|
52
56
|
},
|
|
53
57
|
"devDependencies": {
|
|
54
|
-
"@
|
|
55
|
-
"@
|
|
56
|
-
"@babel/plugin-proposal-decorators": "^7.21.0",
|
|
57
|
-
"@babel/plugin-transform-typescript": "^7.21.0",
|
|
58
|
-
"@babel/preset-env": "^7.20.2",
|
|
59
|
-
"@babel/preset-react": "^7.18.6",
|
|
60
|
-
"@custom-elements-manifest/analyzer": "^0.8.0",
|
|
58
|
+
"@chromatic-com/storybook": "^1.9.0",
|
|
59
|
+
"@custom-elements-manifest/analyzer": "^0.10.3",
|
|
61
60
|
"@open-wc/eslint-config": "^12.0.3",
|
|
62
|
-
"@open-wc/testing": "^3.1.7",
|
|
63
61
|
"@rollup/plugin-commonjs": "^24.0.1",
|
|
62
|
+
"@rollup/plugin-json": "^6.1.0",
|
|
64
63
|
"@rollup/plugin-multi-entry": "^6.0.0",
|
|
65
64
|
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
66
65
|
"@rollup/plugin-terser": "^0.4.0",
|
|
67
|
-
"@storybook/addon-a11y": "^
|
|
68
|
-
"@storybook/addon-
|
|
69
|
-
"@storybook/addon-essentials": "^
|
|
70
|
-
"@storybook/addon-
|
|
71
|
-
"@storybook/addon-
|
|
72
|
-
"@storybook/
|
|
66
|
+
"@storybook/addon-a11y": "^8.3.1",
|
|
67
|
+
"@storybook/addon-docs": "^8.3.1",
|
|
68
|
+
"@storybook/addon-essentials": "^8.3.1",
|
|
69
|
+
"@storybook/addon-interactions": "^8.3.1",
|
|
70
|
+
"@storybook/addon-links": "^8.3.1",
|
|
71
|
+
"@storybook/addon-mdx-gfm": "^8.3.1",
|
|
72
|
+
"@storybook/blocks": "^8.3.1",
|
|
73
|
+
"@storybook/manager-api": "^8.3.1",
|
|
73
74
|
"@storybook/preset-scss": "^1.0.3",
|
|
74
|
-
"@storybook/
|
|
75
|
-
"@storybook/
|
|
76
|
-
"@storybook/web-components
|
|
75
|
+
"@storybook/test": "^8.3.1",
|
|
76
|
+
"@storybook/theming": "^8.3.1",
|
|
77
|
+
"@storybook/web-components": "^8.3.1",
|
|
78
|
+
"@storybook/web-components-vite": "^8.3.1",
|
|
79
|
+
"@testing-library/dom": "^9.3.4",
|
|
80
|
+
"@testing-library/user-event": "^14.5.2",
|
|
77
81
|
"@typescript-eslint/eslint-plugin": "^6.20.0",
|
|
78
82
|
"@typescript-eslint/parser": "^6.20.0",
|
|
83
|
+
"@vitejs/plugin-react": "^4.3.1",
|
|
84
|
+
"@wdio/browser-runner": "^8.32.3",
|
|
85
|
+
"@wdio/cli": "^8.32.3",
|
|
86
|
+
"@wdio/mocha-framework": "^8.31.1",
|
|
87
|
+
"@wdio/spec-reporter": "^8.31.1",
|
|
79
88
|
"@web/dev-server-esbuild": "^0.3.3",
|
|
80
89
|
"@web/test-runner": "^0.15.1",
|
|
81
|
-
"@whitespace/storybook-addon-html": "^
|
|
90
|
+
"@whitespace/storybook-addon-html": "^6.1.1",
|
|
82
91
|
"ajv": "^8.12.0",
|
|
83
|
-
"
|
|
92
|
+
"chromatic": "^11.5.4",
|
|
84
93
|
"concurrently": "^7.6.0",
|
|
85
|
-
"css-loader": "^6.7.3",
|
|
86
94
|
"dotenv": "^16.0.3",
|
|
95
|
+
"electron": "^28.2.2",
|
|
87
96
|
"eslint": "^8.35.0",
|
|
97
|
+
"expect": "^29.7.0",
|
|
88
98
|
"husky": "^8.0.3",
|
|
99
|
+
"jest": "^29.7.0",
|
|
89
100
|
"npm-watch": "^0.11.0",
|
|
90
101
|
"postcss": "^8.4.21",
|
|
91
102
|
"postcss-cli": "^10.1.0",
|
|
92
|
-
"prettier": "^
|
|
103
|
+
"prettier": "^3.3.3",
|
|
104
|
+
"puppeteer": "^22.0.0",
|
|
93
105
|
"react": "^18.2.0",
|
|
94
106
|
"react-dom": "^18.2.0",
|
|
95
107
|
"react-syntax-highlighter": "^15.5.0",
|
|
96
|
-
"remark-gfm": "^
|
|
108
|
+
"remark-gfm": "^4.0.0",
|
|
97
109
|
"rimraf": "^4.3.0",
|
|
98
110
|
"rollup": "^3.20.2",
|
|
99
111
|
"rollup-plugin-copy": "^3.4.0",
|
|
100
112
|
"rollup-plugin-minify-html-literals": "^1.2.6",
|
|
101
113
|
"rollup-plugin-minify-template-literals": "^1.0.3",
|
|
102
114
|
"sass": "^1.58.3",
|
|
103
|
-
"sass-loader": "^13.2.0",
|
|
104
115
|
"ssh2-sftp-client": "^8.1.0",
|
|
105
|
-
"storybook": "^
|
|
106
|
-
"style-loader": "^3.3.1",
|
|
116
|
+
"storybook": "^8.3.1",
|
|
107
117
|
"stylelint": "^15.4.0",
|
|
108
118
|
"stylelint-config-sass-guidelines": "^9.0.1",
|
|
109
119
|
"stylelint-config-standard": "^30.0.1",
|
|
120
|
+
"ts-jest": "^29.1.2",
|
|
121
|
+
"ts-node": "^10.9.2",
|
|
122
|
+
"typescript": "^5.3.3",
|
|
110
123
|
"vite": "^4.4.9"
|
|
111
124
|
},
|
|
112
125
|
"repository": {
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/web-components';
|
|
2
|
-
import './kemet-accordion';
|
|
3
|
-
import './kemet-accordion-panel';
|
|
4
|
-
import '../kemet-tabs/kemet-tabs';
|
|
5
|
-
import '../kemet-tabs/kemet-tab';
|
|
6
|
-
import '../kemet-tabs/kemet-tab-panel';
|
|
7
|
-
import '../kemet-icon/kemet-icon';
|
|
8
|
-
declare const meta: Meta;
|
|
9
|
-
export default meta;
|
|
10
|
-
declare type Story = StoryObj;
|
|
11
|
-
export declare const Standard: Story;
|
|
12
|
-
export declare const TogglePanels: Story;
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { html } from 'lit';
|
|
2
|
-
import './kemet-accordion';
|
|
3
|
-
import './kemet-accordion-panel';
|
|
4
|
-
import '../kemet-tabs/kemet-tabs';
|
|
5
|
-
import '../kemet-tabs/kemet-tab';
|
|
6
|
-
import '../kemet-tabs/kemet-tab-panel';
|
|
7
|
-
import '../kemet-icon/kemet-icon';
|
|
8
|
-
const meta = {
|
|
9
|
-
title: 'Components / Accordion',
|
|
10
|
-
component: 'kemet-accordion',
|
|
11
|
-
};
|
|
12
|
-
export default meta;
|
|
13
|
-
const Template = (args) => html `
|
|
14
|
-
<kemet-accordion ?toggle-panels=${args.togglePanels} kemet-elevation="layer-4">
|
|
15
|
-
<kemet-accordion-panel>
|
|
16
|
-
<h3 slot="trigger">Trigger 1</h3>
|
|
17
|
-
<kemet-icon slot="icon" icon="chevron-down" size="18"></kemet-icon>
|
|
18
|
-
<div slot="body">
|
|
19
|
-
<p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>
|
|
20
|
-
</div>
|
|
21
|
-
</kemet-accordion-panel>
|
|
22
|
-
<kemet-accordion-panel>
|
|
23
|
-
<h3 slot="trigger">Trigger 2</h3>
|
|
24
|
-
<kemet-icon slot="icon" icon="chevron-down" size="18"></kemet-icon>
|
|
25
|
-
<div slot="body">
|
|
26
|
-
<p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>
|
|
27
|
-
</div>
|
|
28
|
-
</kemet-accordion-panel>
|
|
29
|
-
<kemet-accordion-panel>
|
|
30
|
-
<h3 slot="trigger">Trigger 3</h3>
|
|
31
|
-
<kemet-icon slot="icon" icon="chevron-down" size="18"></kemet-icon>
|
|
32
|
-
<div slot="body">
|
|
33
|
-
<p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>
|
|
34
|
-
</div>
|
|
35
|
-
</kemet-accordion-panel>
|
|
36
|
-
</kemet-accordion>
|
|
37
|
-
`;
|
|
38
|
-
export const Standard = {
|
|
39
|
-
render: args => Template(args),
|
|
40
|
-
};
|
|
41
|
-
export const TogglePanels = {
|
|
42
|
-
render: args => Template(args),
|
|
43
|
-
args: {
|
|
44
|
-
togglePanels: true,
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
//# sourceMappingURL=stories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stories.js","sourceRoot":"","sources":["../../../src/components/kemet-accordion/stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,yBAAyB,CAAC;AAEjC,OAAO,0BAA0B,CAAC;AAClC,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AAEvC,OAAO,0BAA0B,CAAC;AAElC,MAAM,IAAI,GAAS;IACjB,KAAK,EAAE,wBAAwB;IAC/B,SAAS,EAAE,iBAAiB;CAC7B,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;oCACK,IAAI,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;CAuBpD,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAU;IACjC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE;QACJ,YAAY,EAAE,IAAI;KACnB;CACF,CAAC","sourcesContent":["import { html } from 'lit';\nimport type { Meta, StoryObj } from '@storybook/web-components';\n\nimport './kemet-accordion';\nimport './kemet-accordion-panel';\n\nimport '../kemet-tabs/kemet-tabs';\nimport '../kemet-tabs/kemet-tab';\nimport '../kemet-tabs/kemet-tab-panel';\n\nimport '../kemet-icon/kemet-icon';\n\nconst meta: Meta = {\n title: 'Components / Accordion',\n component: 'kemet-accordion',\n};\nexport default meta;\n\ntype Story = StoryObj;\n\nconst Template = (args) => html`\n <kemet-accordion ?toggle-panels=${args.togglePanels} kemet-elevation=\"layer-4\">\n <kemet-accordion-panel>\n <h3 slot=\"trigger\">Trigger 1</h3>\n <kemet-icon slot=\"icon\" icon=\"chevron-down\" size=\"18\"></kemet-icon>\n <div slot=\"body\">\n <p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>\n </div>\n </kemet-accordion-panel>\n <kemet-accordion-panel>\n <h3 slot=\"trigger\">Trigger 2</h3>\n <kemet-icon slot=\"icon\" icon=\"chevron-down\" size=\"18\"></kemet-icon>\n <div slot=\"body\">\n <p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>\n </div>\n </kemet-accordion-panel>\n <kemet-accordion-panel>\n <h3 slot=\"trigger\">Trigger 3</h3>\n <kemet-icon slot=\"icon\" icon=\"chevron-down\" size=\"18\"></kemet-icon>\n <div slot=\"body\">\n <p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>\n </div>\n </kemet-accordion-panel>\n </kemet-accordion>\n`;\n\nexport const Standard: Story = {\n render: args => Template(args),\n};\n\nexport const TogglePanels: Story = {\n render: args => Template(args),\n args: {\n togglePanels: true,\n },\n};\n"]}
|