@brandsync/wc 0.0.8 → 0.0.10
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 +1821 -342
- package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
- package/dist/brandsync-wc/p-0d64ea40.entry.js +1 -0
- package/dist/brandsync-wc/{p-c63d16e1.entry.js → p-1515498e.entry.js} +1 -1
- package/dist/brandsync-wc/p-16a54578.entry.js +1 -0
- package/dist/brandsync-wc/p-18af02df.entry.js +1 -0
- package/dist/brandsync-wc/p-30a0e168.entry.js +1 -0
- package/dist/brandsync-wc/p-3dacae70.entry.js +1 -0
- package/dist/brandsync-wc/p-575ce905.entry.js +1 -0
- package/dist/brandsync-wc/{p-dd0fea0e.entry.js → p-7776b57b.entry.js} +1 -1
- package/dist/brandsync-wc/{p-260bd201.entry.js → p-805644e4.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f88d9a6e.entry.js → p-8a78d6ea.entry.js} +1 -1
- package/dist/brandsync-wc/p-8d12ed96.entry.js +1 -0
- package/dist/brandsync-wc/p-94ed898a.entry.js +1 -0
- package/dist/brandsync-wc/{p-9e5d2211.entry.js → p-96f374be.entry.js} +1 -1
- package/dist/brandsync-wc/{p-ab5cc7af.entry.js → p-a34f460d.entry.js} +1 -1
- package/dist/brandsync-wc/p-b1e1b2d6.entry.js +1 -0
- package/dist/brandsync-wc/p-bc72439a.entry.js +1 -0
- package/dist/brandsync-wc/{p-76eca100.entry.js → p-ce0914a7.entry.js} +1 -1
- package/dist/brandsync-wc/{p-5a0fe72e.entry.js → p-d682675e.entry.js} +1 -1
- package/dist/brandsync-wc/p-dad4a92c.entry.js +1 -0
- package/dist/brandsync-wc/{p-cfc3421b.entry.js → p-dd747a12.entry.js} +1 -1
- package/dist/brandsync-wc/{p-2742ecef.entry.js → p-eb4d87f0.entry.js} +1 -1
- package/dist/cjs/brandsync-wc.cjs.js +1 -1
- package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +17 -0
- package/dist/cjs/bs-ai-greeting.cjs.entry.js +24 -0
- package/dist/cjs/bs-ai-thinking.cjs.entry.js +1 -1
- package/dist/cjs/bs-attachment-list.cjs.entry.js +47 -0
- package/dist/cjs/bs-attachment.cjs.entry.js +46 -0
- package/dist/cjs/bs-badge.cjs.entry.js +1 -1
- package/dist/cjs/bs-button-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/bs-button.cjs.entry.js +1 -1
- package/dist/cjs/bs-card.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +94 -0
- package/dist/cjs/bs-chatbot-header.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +38 -0
- package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +1 -1
- package/dist/cjs/bs-composer-status-banner.cjs.entry.js +43 -0
- package/dist/cjs/bs-composer.cjs.entry.js +16 -2
- package/dist/cjs/bs-data-table.cjs.entry.js +2 -2
- package/dist/cjs/bs-input.cjs.entry.js +270 -4
- package/dist/cjs/bs-menu_2.cjs.entry.js +47 -0
- package/dist/cjs/bs-source-link.cjs.entry.js +39 -0
- package/dist/cjs/bs-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +8 -0
- package/dist/collection/components/bs-ai-chatbot/bs-ai-chatbot.stories.js +180 -0
- package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.cmp.test.js +14 -0
- package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.css +27 -0
- package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +41 -0
- package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.stories.js +15 -0
- package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.cmp.test.js +22 -0
- package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.css +53 -0
- package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +103 -0
- package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.stories.js +23 -0
- package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
- package/dist/collection/components/bs-attachment/bs-attachment.cmp.test.js +41 -0
- package/dist/collection/components/bs-attachment/bs-attachment.css +184 -0
- package/dist/collection/components/bs-attachment/bs-attachment.js +230 -0
- package/dist/collection/components/bs-attachment/bs-attachment.stories.js +58 -0
- package/dist/collection/components/bs-attachment-list/bs-attachment-list.cmp.test.js +28 -0
- package/dist/collection/components/bs-attachment-list/bs-attachment-list.css +56 -0
- package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +105 -0
- package/dist/collection/components/bs-attachment-list/bs-attachment-list.stories.js +47 -0
- package/dist/collection/components/bs-badge/bs-badge.js +1 -1
- package/dist/collection/components/bs-button/bs-button.js +1 -1
- package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
- package/dist/collection/components/bs-card/bs-card.js +1 -1
- package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.cmp.test.js +73 -0
- package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.css +253 -0
- package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +324 -0
- package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.stories.js +54 -0
- package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
- package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
- package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.cmp.test.js +34 -0
- package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.css +106 -0
- package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +142 -0
- package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.stories.js +44 -0
- package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
- package/dist/collection/components/bs-composer/bs-composer.cmp.test.js +12 -0
- package/dist/collection/components/bs-composer/bs-composer.css +10 -0
- package/dist/collection/components/bs-composer/bs-composer.js +25 -1
- package/dist/collection/components/bs-composer/bs-composer.stories.js +13 -0
- package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.cmp.test.js +42 -0
- package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.css +173 -0
- package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +270 -0
- package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.stories.js +75 -0
- package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
- package/dist/collection/components/bs-input/bs-input.cmp.test.js +296 -0
- package/dist/collection/components/bs-input/bs-input.css +333 -23
- package/dist/collection/components/bs-input/bs-input.js +647 -11
- package/dist/collection/components/bs-input/bs-input.stories.js +128 -1
- package/dist/collection/components/bs-menu/bs-menu.js +1 -1
- package/dist/collection/components/bs-menu-item/bs-menu-item.cmp.test.js +18 -0
- package/dist/collection/components/bs-menu-item/bs-menu-item.css +19 -1
- package/dist/collection/components/bs-menu-item/bs-menu-item.js +34 -2
- package/dist/collection/components/bs-menu-item/bs-menu-item.stories.js +3 -0
- package/dist/collection/components/bs-source-link/bs-source-link.cmp.test.js +42 -0
- package/dist/collection/components/bs-source-link/bs-source-link.css +114 -0
- package/dist/collection/components/bs-source-link/bs-source-link.js +192 -0
- package/dist/collection/components/bs-source-link/bs-source-link.stories.js +33 -0
- package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
- package/dist/components/bs-ai-disclaimer.d.ts +11 -0
- package/dist/components/bs-ai-disclaimer.js +1 -0
- package/dist/components/bs-ai-greeting.d.ts +11 -0
- package/dist/components/bs-ai-greeting.js +1 -0
- package/dist/components/bs-ai-thinking.js +1 -1
- package/dist/components/bs-attachment-list.d.ts +11 -0
- package/dist/components/bs-attachment-list.js +1 -0
- package/dist/components/bs-attachment.d.ts +11 -0
- package/dist/components/bs-attachment.js +1 -0
- package/dist/components/bs-badge.js +1 -1
- package/dist/components/bs-button-skeleton.js +1 -1
- package/dist/components/bs-button.js +1 -1
- package/dist/components/bs-card.js +1 -1
- package/dist/components/bs-chatbot-feedback.d.ts +11 -0
- package/dist/components/bs-chatbot-feedback.js +1 -0
- package/dist/components/bs-chatbot-header.js +1 -1
- package/dist/components/bs-chatbot-response-action.js +1 -1
- package/dist/components/bs-chatbot-sources-drawer.d.ts +11 -0
- package/dist/components/bs-chatbot-sources-drawer.js +1 -0
- package/dist/components/bs-chatbot-suggestion-button.js +1 -1
- package/dist/components/bs-composer-status-banner.d.ts +11 -0
- package/dist/components/bs-composer-status-banner.js +1 -0
- package/dist/components/bs-composer.js +1 -1
- package/dist/components/bs-data-table.js +1 -1
- package/dist/components/bs-input.js +1 -1
- package/dist/components/bs-menu-item.js +1 -1
- package/dist/components/bs-menu.js +1 -1
- package/dist/components/bs-source-link.d.ts +11 -0
- package/dist/components/bs-source-link.js +1 -0
- package/dist/components/bs-tooltip.js +1 -1
- package/dist/components/{p-CoC4LQCI.js → p-Cz2nfz2j.js} +1 -1
- package/dist/components/p-DHbUF0g6.js +1 -0
- package/dist/components/p-DndQiCMP.js +1 -0
- package/dist/esm/brandsync-wc.js +1 -1
- package/dist/esm/bs-ai-disclaimer.entry.js +15 -0
- package/dist/esm/bs-ai-greeting.entry.js +22 -0
- package/dist/esm/bs-ai-thinking.entry.js +1 -1
- package/dist/esm/bs-attachment-list.entry.js +45 -0
- package/dist/esm/bs-attachment.entry.js +44 -0
- package/dist/esm/bs-badge.entry.js +1 -1
- package/dist/esm/bs-button-skeleton.entry.js +1 -1
- package/dist/esm/bs-button.entry.js +1 -1
- package/dist/esm/bs-card.entry.js +1 -1
- package/dist/esm/bs-chatbot-feedback.entry.js +92 -0
- package/dist/esm/bs-chatbot-header.entry.js +1 -1
- package/dist/esm/bs-chatbot-response-action.entry.js +1 -1
- package/dist/esm/bs-chatbot-sources-drawer.entry.js +36 -0
- package/dist/esm/bs-chatbot-suggestion-button.entry.js +1 -1
- package/dist/esm/bs-composer-status-banner.entry.js +41 -0
- package/dist/esm/bs-composer.entry.js +17 -3
- package/dist/esm/bs-data-table.entry.js +2 -2
- package/dist/esm/bs-input.entry.js +271 -5
- package/dist/esm/bs-menu_2.entry.js +44 -0
- package/dist/esm/bs-source-link.entry.js +37 -0
- package/dist/esm/bs-tooltip.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/bs-ai-chatbot/bs-ai-chatbot.stories.d.ts +18 -0
- package/dist/types/components/bs-ai-disclaimer/bs-ai-disclaimer.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-ai-disclaimer/bs-ai-disclaimer.d.ts +26 -0
- package/dist/types/components/bs-ai-disclaimer/bs-ai-disclaimer.stories.d.ts +8 -0
- package/dist/types/components/bs-ai-greeting/bs-ai-greeting.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-ai-greeting/bs-ai-greeting.d.ts +42 -0
- package/dist/types/components/bs-ai-greeting/bs-ai-greeting.stories.d.ts +10 -0
- package/dist/types/components/bs-attachment/bs-attachment.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-attachment/bs-attachment.d.ts +59 -0
- package/dist/types/components/bs-attachment/bs-attachment.stories.d.ts +17 -0
- package/dist/types/components/bs-attachment-list/bs-attachment-list.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-attachment-list/bs-attachment-list.d.ts +42 -0
- package/dist/types/components/bs-attachment-list/bs-attachment-list.stories.d.ts +10 -0
- package/dist/types/components/bs-chatbot-feedback/bs-chatbot-feedback.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-chatbot-feedback/bs-chatbot-feedback.d.ts +90 -0
- package/dist/types/components/bs-chatbot-feedback/bs-chatbot-feedback.stories.d.ts +16 -0
- package/dist/types/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.d.ts +54 -0
- package/dist/types/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.stories.d.ts +10 -0
- package/dist/types/components/bs-composer/bs-composer.d.ts +14 -0
- package/dist/types/components/bs-composer/bs-composer.stories.d.ts +1 -0
- package/dist/types/components/bs-composer-status-banner/bs-composer-status-banner.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-composer-status-banner/bs-composer-status-banner.d.ts +88 -0
- package/dist/types/components/bs-composer-status-banner/bs-composer-status-banner.stories.d.ts +20 -0
- package/dist/types/components/bs-input/bs-input.d.ts +139 -6
- package/dist/types/components/bs-input/bs-input.stories.d.ts +19 -0
- package/dist/types/components/bs-menu-item/bs-menu-item.d.ts +7 -1
- package/dist/types/components/bs-menu-item/bs-menu-item.stories.d.ts +1 -0
- package/dist/types/components/bs-source-link/bs-source-link.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-source-link/bs-source-link.d.ts +51 -0
- package/dist/types/components/bs-source-link/bs-source-link.stories.d.ts +13 -0
- package/dist/types/components.d.ts +1776 -24
- package/package.json +1 -1
- package/dist/brandsync-wc/p-6abdfaf0.entry.js +0 -1
- package/dist/brandsync-wc/p-6c1fa4da.entry.js +0 -1
- package/dist/brandsync-wc/p-a12d0a60.entry.js +0 -1
- package/dist/brandsync-wc/p-f5f443e2.entry.js +0 -1
- package/dist/cjs/bs-menu-item.cjs.entry.js +0 -29
- package/dist/cjs/bs-menu.cjs.entry.js +0 -17
- package/dist/esm/bs-menu-item.entry.js +0 -27
- package/dist/esm/bs-menu.entry.js +0 -15
|
@@ -2,16 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
var index = require('./index-CVh-sqA_.js');
|
|
4
4
|
|
|
5
|
-
const bsInputCss = () => `:host{display:block}.bs-input{display:flex;flex-direction:column;gap:var(--bs-
|
|
5
|
+
const bsInputCss = () => `:host{display:block;--bs-input-radius:var(--bs-border-radius-100);--bs-input-height:var(--bs-spacing-600);--bs-input-padding-x:var(--bs-spacing-150);--bs-input-padding-y:var(--bs-spacing-100);--bs-input-gap:var(--bs-spacing-200);--bs-input-icon-size:var(--bs-spacing-300);--bs-input-stack-gap:var(--bs-spacing-50);--bs-input-error-icon-size:var(--bs-spacing-250);--bs-input-field-bg:var(--bs-input-bg-default);--bs-input-field-bg-disabled:var(--bs-input-bg-disabled);--bs-input-field-border:var(--bs-input-border-default);--bs-input-field-border-hover:var(--bs-input-border-hover);--bs-input-field-border-focus:var(--bs-input-border-focus);--bs-input-field-border-error:var(--bs-input-border-error);--bs-input-field-text:var(--bs-input-text);--bs-input-field-placeholder:var(--bs-input-placeholder);--bs-input-label-color:var(--bs-input-label);--bs-input-description-color:var(--bs-input-description);--bs-input-error-color:var(--bs-input-error);--bs-input-icon-color:var(--bs-icon-muted);--bs-input-icon-color-error:var(--bs-input-icon-error);--bs-input-icon-color-disabled:var(--bs-input-icon-disabled);--bs-input-chip-bg:var(--bs-input-bg-disabled);--bs-input-chip-text:var(--bs-input-text)}.bs-input{display:flex;flex-direction:column;gap:var(--bs-input-stack-gap);font-family:inherit}.bs-input__label{font-size:var(--bs-font-size-sm);font-weight:var(--bs-font-weight-medium);color:var(--bs-input-label-color)}.bs-input__required{color:var(--bs-input-error-color);margin-left:2px}.bs-input__field{box-sizing:border-box;display:flex;align-items:center;gap:var(--bs-input-gap);height:var(--bs-input-height);padding:var(--bs-input-padding-y) var(--bs-input-padding-x);border:1px solid var(--bs-input-field-border);border-radius:var(--bs-input-radius);background:var(--bs-input-field-bg)}.bs-input__field:hover:not(.bs-input__field--disabled){border-color:var(--bs-input-field-border-hover)}.bs-input__field:focus-within{border-color:var(--bs-input-field-border-focus)}.bs-input__field--error{border-color:var(--bs-input-field-border-error)}.bs-input__field--disabled{background:var(--bs-input-field-bg-disabled);cursor:not-allowed}.bs-input__control{flex:1;min-width:0;border:none;outline:none;padding:0;background:transparent;color:var(--bs-input-field-text);font-size:var(--bs-font-size-md);font-family:inherit}.bs-input__control::placeholder{color:var(--bs-input-field-placeholder)}.bs-input__control:disabled{color:var(--bs-input-text-disabled);cursor:not-allowed}.bs-input__control::-webkit-strong-password-auto-fill-button,.bs-input__control::-webkit-credentials-auto-fill-button{display:none !important;visibility:hidden;pointer-events:none;position:absolute;right:0}.bs-input__control::-webkit-textfield-decoration-container{visibility:hidden}.bs-input__control::-ms-reveal,.bs-input__control::-ms-clear{display:none}.bs-input--error .bs-input__label{color:var(--bs-input-label-color)}.bs-input__icon,.bs-input__end-icon{display:none;align-items:center;flex-shrink:0;color:var(--bs-input-icon-color)}.bs-input__icon--visible,.bs-input__end-icon--visible{display:flex}.bs-input__icon ::slotted(*),.bs-input__end-icon ::slotted(*){display:block;width:var(--bs-input-icon-size);height:var(--bs-input-icon-size)}.bs-input__field--error .bs-input__icon,.bs-input__field--error .bs-input__end-icon{color:var(--bs-input-icon-color-error)}.bs-input__field--disabled .bs-input__icon,.bs-input__field--disabled .bs-input__end-icon{color:var(--bs-input-icon-color-disabled)}.bs-input__description{font-size:var(--bs-font-size-xs);color:var(--bs-input-description-color)}.bs-input__error{display:flex;align-items:center;gap:var(--bs-input-stack-gap);font-size:var(--bs-font-size-xs);color:var(--bs-input-error-color)}.bs-input__error-icon{flex-shrink:0;width:var(--bs-input-error-icon-size);height:var(--bs-input-error-icon-size)}.bs-input__field--textarea{height:auto;align-items:flex-start}.bs-input__control--textarea{resize:vertical}.bs-input__stepper{display:flex;flex-direction:column}.bs-input__stepper-btn{display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:inherit;padding:0;cursor:pointer}.bs-input__stepper-btn:disabled{cursor:not-allowed}.bs-input__password-toggle{display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:inherit;padding:0;cursor:pointer;width:var(--bs-input-icon-size);height:var(--bs-input-icon-size)}.bs-input__password-toggle:disabled{cursor:not-allowed}.bs-input__password-toggle svg{width:100%;height:100%}.bs-input__chevron{width:var(--bs-input-icon-size);height:var(--bs-input-icon-size)}.bs-input__field-wrapper{position:relative;width:100%}.bs-input__dropdown-menu{position:absolute;top:calc(100% + var(--bs-input-stack-gap));left:0;right:0;z-index:1}.bs-input__calendar{width:var(--bs-input-icon-size);height:var(--bs-input-icon-size)}.bs-input__search-icon{width:var(--bs-input-icon-size);height:var(--bs-input-icon-size)}.bs-input__field--chip{flex-wrap:wrap;height:auto;min-height:var(--bs-input-height)}.bs-input__chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--bs-spacing-100);flex:1;min-width:0}.bs-input__chip{display:inline-flex;align-items:center;gap:4px;background:var(--bs-input-chip-bg);color:var(--bs-input-chip-text);border-radius:var(--bs-input-radius);padding:2px 6px;font-size:var(--bs-font-size-sm)}.bs-input__chip-remove{border:none;background:transparent;color:inherit;cursor:pointer;padding:0;line-height:1}.bs-input__chip-input{flex:1;min-width:60px}.bs-input__title-select,.bs-input__country-select{flex-shrink:0;width:auto;border:none;outline:none;background:transparent;color:var(--bs-input-field-text);font-size:var(--bs-font-size-md);font-family:inherit}.bs-input__field--pin{border:none;padding:0;background:transparent;gap:var(--bs-input-gap)}.bs-input__pin-cell{box-sizing:border-box;width:var(--bs-input-height);height:var(--bs-input-height);text-align:center;border:1px solid var(--bs-input-field-border);border-radius:var(--bs-input-radius);background:var(--bs-input-field-bg);color:var(--bs-input-field-text);font-size:var(--bs-font-size-md);font-family:inherit;outline:none}.bs-input__pin-cell:focus{border-color:var(--bs-input-field-border-focus)}.bs-input__field--pin.bs-input__field--disabled .bs-input__pin-cell{background:var(--bs-input-field-bg-disabled);cursor:not-allowed}`;
|
|
6
6
|
|
|
7
7
|
const BsInput = class {
|
|
8
8
|
constructor(hostRef) {
|
|
9
9
|
index.registerInstance(this, hostRef);
|
|
10
10
|
this.bsInput = index.createEvent(this, "bsInput");
|
|
11
11
|
this.bsChange = index.createEvent(this, "bsChange");
|
|
12
|
+
this.bsOpen = index.createEvent(this, "bsOpen");
|
|
13
|
+
this.bsChipAdd = index.createEvent(this, "bsChipAdd");
|
|
14
|
+
this.bsChipRemove = index.createEvent(this, "bsChipRemove");
|
|
15
|
+
this.bsTitleChange = index.createEvent(this, "bsTitleChange");
|
|
16
|
+
this.bsCountryChange = index.createEvent(this, "bsCountryChange");
|
|
12
17
|
}
|
|
18
|
+
get el() { return index.getElement(this); }
|
|
13
19
|
/** Current value. Native `input`/`change` events don't cross the Shadow DOM boundary, so this
|
|
14
|
-
* component re-dispatches them as `bsInput`/`bsChange` custom events instead.
|
|
20
|
+
* component re-dispatches them as `bsInput`/`bsChange` custom events instead. Mutable so the
|
|
21
|
+
* `number` type's stepper buttons can update it directly. */
|
|
15
22
|
value = '';
|
|
16
23
|
type = 'text';
|
|
17
24
|
label;
|
|
@@ -19,8 +26,83 @@ const BsInput = class {
|
|
|
19
26
|
description;
|
|
20
27
|
error;
|
|
21
28
|
disabled = false;
|
|
29
|
+
/** Marks the field as required: renders a red `*` after the label and sets `aria-required="true"`
|
|
30
|
+
* on the control. Applies regardless of `type`. */
|
|
31
|
+
required = false;
|
|
32
|
+
/** Step size for `type="number"`'s increment/decrement stepper buttons. */
|
|
33
|
+
step = 1;
|
|
34
|
+
/** Minimum value for `type="number"`'s stepper buttons. */
|
|
35
|
+
min;
|
|
36
|
+
/** Maximum value for `type="number"`'s stepper buttons. */
|
|
37
|
+
max;
|
|
38
|
+
/** Options for `type="select"` (rendered as native `<option>`s) and `type="dropdown"` (rendered
|
|
39
|
+
* as a `bs-menu` of `bs-menu-item`s when `open`). Must be set as a JS property, not an HTML
|
|
40
|
+
* attribute -- see CONVENTIONS.md's non-string props rule. */
|
|
41
|
+
options = [];
|
|
42
|
+
/** Number of visible rows for `type="textarea"`. */
|
|
43
|
+
rows = 3;
|
|
44
|
+
/** Current chips for `type="chip"`. Must be set as a JS property, not an HTML attribute -- see
|
|
45
|
+
* CONVENTIONS.md's non-string props rule. */
|
|
46
|
+
chips = [];
|
|
47
|
+
/** Title select options for `type="initials"` (e.g. `['Mrs.', 'Mr.', 'Dr.']`). Must be set as a
|
|
48
|
+
* JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule. */
|
|
49
|
+
titleOptions = [];
|
|
50
|
+
/** Current selected title for `type="initials"`. Named `initialsTitle` rather than `title` --
|
|
51
|
+
* `title` is a reserved standard HTML attribute (tooltip text) inherited by every element, and
|
|
52
|
+
* Stencil warns against shadowing it with a component `@Prop`. */
|
|
53
|
+
initialsTitle = '';
|
|
54
|
+
/** Country select options for `type="country"`. Must be set as a JS property, not an HTML
|
|
55
|
+
* attribute -- see CONVENTIONS.md's non-string props rule. */
|
|
56
|
+
countryOptions = [];
|
|
57
|
+
/** Current selected country code for `type="country"`. */
|
|
58
|
+
country = '';
|
|
59
|
+
/** Number of cells for `type="pin"`. */
|
|
60
|
+
length = 4;
|
|
61
|
+
/** Whether the `type="dropdown"` trigger is open. Reflects to an attribute so consumers can style
|
|
62
|
+
* an open state via CSS. When `options` is non-empty, this also controls whether the `bs-menu`
|
|
63
|
+
* of `bs-menu-item`s is rendered below the field. */
|
|
64
|
+
open = false;
|
|
22
65
|
bsInput;
|
|
23
66
|
bsChange;
|
|
67
|
+
/** Emitted when `type="dropdown"`'s trigger is toggled. See `open`'s doc comment for this type's
|
|
68
|
+
* shell-only limitation. */
|
|
69
|
+
bsOpen;
|
|
70
|
+
/** Emitted when a chip is committed (Enter pressed in the draft input) for `type="chip"`. */
|
|
71
|
+
bsChipAdd;
|
|
72
|
+
/** Emitted when a chip's remove button is clicked for `type="chip"`. */
|
|
73
|
+
bsChipRemove;
|
|
74
|
+
/** Emitted when the title `<select>` changes for `type="initials"`. */
|
|
75
|
+
bsTitleChange;
|
|
76
|
+
/** Emitted when the country `<select>` changes for `type="country"`. */
|
|
77
|
+
bsCountryChange;
|
|
78
|
+
/** Tracks whether the `icon` slot has assigned content, so the leading icon wrapper only takes
|
|
79
|
+
* up space in the field when there's actually an icon (same pattern as `bs-button`). */
|
|
80
|
+
hasIcon = false;
|
|
81
|
+
/** Tracks whether the `end-icon` slot has assigned content, so the trailing icon wrapper only
|
|
82
|
+
* takes up space in the field when there's actually a trailing icon. */
|
|
83
|
+
hasEndIcon = false;
|
|
84
|
+
/** Whether `type="password"`'s native input is currently rendered as `type="text"` (revealed). The
|
|
85
|
+
* `type` prop itself stays `'password'` -- this only toggles the rendered native input's type. */
|
|
86
|
+
passwordVisible = false;
|
|
87
|
+
/** Draft text for `type="chip"`'s trailing input, committed to a chip on Enter. */
|
|
88
|
+
chipDraft = '';
|
|
89
|
+
pinInputs = [];
|
|
90
|
+
/** Computes the initial `hasIcon`/`hasEndIcon` state directly from the host's light DOM
|
|
91
|
+
* children, before first render -- see `bs-button`'s `componentWillLoad` for why `slotchange`
|
|
92
|
+
* alone isn't enough for a slot that starts (and stays) empty. */
|
|
93
|
+
componentWillLoad() {
|
|
94
|
+
this.hasIcon = this.hasSlottedContent('icon');
|
|
95
|
+
this.hasEndIcon = this.hasSlottedContent('end-icon');
|
|
96
|
+
}
|
|
97
|
+
hasSlottedContent(slotName) {
|
|
98
|
+
return Array.from(this.el.childNodes).some(node => node.nodeType === Node.ELEMENT_NODE && node.getAttribute('slot') === slotName);
|
|
99
|
+
}
|
|
100
|
+
onIconSlotchange = (ev) => {
|
|
101
|
+
this.hasIcon = ev.target.assignedNodes().length > 0;
|
|
102
|
+
};
|
|
103
|
+
onEndIconSlotchange = (ev) => {
|
|
104
|
+
this.hasEndIcon = ev.target.assignedNodes().length > 0;
|
|
105
|
+
};
|
|
24
106
|
onInput = (ev) => {
|
|
25
107
|
const value = ev.target.value;
|
|
26
108
|
this.bsInput.emit(value);
|
|
@@ -29,11 +111,195 @@ const BsInput = class {
|
|
|
29
111
|
const value = ev.target.value;
|
|
30
112
|
this.bsChange.emit(value);
|
|
31
113
|
};
|
|
114
|
+
clampNumber(n) {
|
|
115
|
+
if (this.min !== undefined && n < this.min)
|
|
116
|
+
n = this.min;
|
|
117
|
+
if (this.max !== undefined && n > this.max)
|
|
118
|
+
n = this.max;
|
|
119
|
+
return n;
|
|
120
|
+
}
|
|
121
|
+
onStepperIncrement = () => {
|
|
122
|
+
if (this.disabled)
|
|
123
|
+
return;
|
|
124
|
+
const next = this.clampNumber((parseFloat(this.value) || 0) + this.step);
|
|
125
|
+
this.value = String(next);
|
|
126
|
+
this.bsChange.emit(this.value);
|
|
127
|
+
};
|
|
128
|
+
onStepperDecrement = () => {
|
|
129
|
+
if (this.disabled)
|
|
130
|
+
return;
|
|
131
|
+
const next = this.clampNumber((parseFloat(this.value) || 0) - this.step);
|
|
132
|
+
this.value = String(next);
|
|
133
|
+
this.bsChange.emit(this.value);
|
|
134
|
+
};
|
|
135
|
+
onTogglePasswordVisibility = () => {
|
|
136
|
+
this.passwordVisible = !this.passwordVisible;
|
|
137
|
+
};
|
|
138
|
+
onDropdownToggle = () => {
|
|
139
|
+
if (this.disabled)
|
|
140
|
+
return;
|
|
141
|
+
this.open = !this.open;
|
|
142
|
+
this.bsOpen.emit(this.open);
|
|
143
|
+
};
|
|
144
|
+
onDropdownKeydown = (ev) => {
|
|
145
|
+
if (ev.key === 'Enter' || ev.key === ' ') {
|
|
146
|
+
ev.preventDefault();
|
|
147
|
+
this.onDropdownToggle();
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
onDropdownOptionSelect = (option) => () => {
|
|
151
|
+
this.value = option.label;
|
|
152
|
+
this.open = false;
|
|
153
|
+
this.bsChange.emit(this.value);
|
|
154
|
+
};
|
|
155
|
+
/** Closes the `type="dropdown"` menu on Escape, from anywhere within the component (host is the
|
|
156
|
+
* default @Listen target, and both keydown from the native control and from `bs-menu-item`
|
|
157
|
+
* buttons bubble/compose up to it). */
|
|
158
|
+
onHostKeydown(ev) {
|
|
159
|
+
if (this.type === 'dropdown' && this.open && ev.key === 'Escape') {
|
|
160
|
+
this.open = false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/** Closes the `type="dropdown"` menu once focus leaves the component entirely (e.g. Tab away, or
|
|
164
|
+
* a click outside that moves focus elsewhere) -- `focusout` is composed, so it bubbles across
|
|
165
|
+
* the `bs-menu-item` shadow boundary too. */
|
|
166
|
+
onHostFocusOut(ev) {
|
|
167
|
+
if (this.type !== 'dropdown' || !this.open)
|
|
168
|
+
return;
|
|
169
|
+
const related = ev.relatedTarget;
|
|
170
|
+
if (!related || !this.el.contains(related)) {
|
|
171
|
+
this.open = false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
onChipDraftInput = (ev) => {
|
|
175
|
+
this.chipDraft = ev.target.value;
|
|
176
|
+
};
|
|
177
|
+
onChipDraftKeydown = (ev) => {
|
|
178
|
+
if (ev.key === 'Enter') {
|
|
179
|
+
ev.preventDefault();
|
|
180
|
+
const value = this.chipDraft.trim();
|
|
181
|
+
if (value) {
|
|
182
|
+
this.bsChipAdd.emit(value);
|
|
183
|
+
this.chipDraft = '';
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
onChipRemove = (chip) => () => {
|
|
188
|
+
this.bsChipRemove.emit(chip);
|
|
189
|
+
};
|
|
190
|
+
onTitleChange = (ev) => {
|
|
191
|
+
this.bsTitleChange.emit(ev.target.value);
|
|
192
|
+
};
|
|
193
|
+
onCountryChange = (ev) => {
|
|
194
|
+
this.bsCountryChange.emit(ev.target.value);
|
|
195
|
+
};
|
|
196
|
+
onPinInput = (index) => (ev) => {
|
|
197
|
+
const input = ev.target;
|
|
198
|
+
let value = input.value;
|
|
199
|
+
if (value.length > 1) {
|
|
200
|
+
value = value.slice(-1);
|
|
201
|
+
input.value = value;
|
|
202
|
+
}
|
|
203
|
+
if (value && index < this.length - 1) {
|
|
204
|
+
this.pinInputs[index + 1]?.focus();
|
|
205
|
+
}
|
|
206
|
+
this.bsChange.emit(this.pinInputs.map(i => i?.value ?? '').join(''));
|
|
207
|
+
};
|
|
208
|
+
onPinKeydown = (index) => (ev) => {
|
|
209
|
+
if (ev.key === 'Backspace' && !ev.target.value && index > 0) {
|
|
210
|
+
this.pinInputs[index - 1]?.focus();
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
get showsEndIconArea() {
|
|
214
|
+
return (this.type === 'number' || this.type === 'password' || this.type === 'dropdown' || this.type === 'date' || this.hasEndIcon);
|
|
215
|
+
}
|
|
216
|
+
get showsIconArea() {
|
|
217
|
+
return (this.type === 'search' && !this.hasIcon) || this.hasIcon;
|
|
218
|
+
}
|
|
219
|
+
renderIconContent() {
|
|
220
|
+
if (this.type === 'search' && !this.hasIcon) {
|
|
221
|
+
return (index.h("svg", { class: "bs-input__search-icon", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, index.h("circle", { cx: "7", cy: "7", r: "5", stroke: "currentColor", "stroke-width": "1.3" }), index.h("path", { d: "M11 11L14.5 14.5", stroke: "currentColor", "stroke-width": "1.3", "stroke-linecap": "round" })));
|
|
222
|
+
}
|
|
223
|
+
return index.h("slot", { name: "icon", onSlotchange: this.onIconSlotchange });
|
|
224
|
+
}
|
|
225
|
+
renderEndIconContent() {
|
|
226
|
+
if (this.type === 'number') {
|
|
227
|
+
return (index.h("span", { class: "bs-input__stepper" }, index.h("button", { type: "button", part: "control", class: "bs-input__stepper-btn", "aria-label": "Increment", tabIndex: -1, disabled: this.disabled, onClick: this.onStepperIncrement }, index.h("svg", { viewBox: "0 0 10 6", width: "10", height: "6", "aria-hidden": "true" }, index.h("path", { d: "M1 5L5 1L9 5", stroke: "currentColor", "stroke-width": "1.3", fill: "none", "stroke-linecap": "round", "stroke-linejoin": "round" }))), index.h("button", { type: "button", part: "control", class: "bs-input__stepper-btn", "aria-label": "Decrement", tabIndex: -1, disabled: this.disabled, onClick: this.onStepperDecrement }, index.h("svg", { viewBox: "0 0 10 6", width: "10", height: "6", "aria-hidden": "true" }, index.h("path", { d: "M1 1L5 5L9 1", stroke: "currentColor", "stroke-width": "1.3", fill: "none", "stroke-linecap": "round", "stroke-linejoin": "round" })))));
|
|
228
|
+
}
|
|
229
|
+
if (this.type === 'password') {
|
|
230
|
+
return (index.h("button", { type: "button", part: "control", class: "bs-input__password-toggle", "aria-label": this.passwordVisible ? 'Hide password' : 'Show password', disabled: this.disabled, onClick: this.onTogglePasswordVisibility }, this.passwordVisible ? (index.h("svg", { viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, index.h("path", { d: "M1 8C2.2 5.5 4.9 3 8 3C11.1 3 13.8 5.5 15 8C13.8 10.5 11.1 13 8 13C4.9 13 2.2 10.5 1 8Z", stroke: "currentColor", "stroke-width": "1.2", "stroke-linejoin": "round" }), index.h("circle", { cx: "8", cy: "8", r: "2", stroke: "currentColor", "stroke-width": "1.2" }), index.h("path", { d: "M2 2L14 14", stroke: "currentColor", "stroke-width": "1.2", "stroke-linecap": "round" }))) : (index.h("svg", { viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, index.h("path", { d: "M1 8C2.2 5.5 4.9 3 8 3C11.1 3 13.8 5.5 15 8C13.8 10.5 11.1 13 8 13C4.9 13 2.2 10.5 1 8Z", stroke: "currentColor", "stroke-width": "1.2", "stroke-linejoin": "round" }), index.h("circle", { cx: "8", cy: "8", r: "2", stroke: "currentColor", "stroke-width": "1.2" })))));
|
|
231
|
+
}
|
|
232
|
+
if (this.type === 'dropdown') {
|
|
233
|
+
return (index.h("svg", { class: "bs-input__chevron", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, index.h("path", { d: "M4 6L8 10L12 6", stroke: "currentColor", "stroke-width": "1.3", "stroke-linecap": "round", "stroke-linejoin": "round" })));
|
|
234
|
+
}
|
|
235
|
+
if (this.type === 'date' && !this.hasEndIcon) {
|
|
236
|
+
return (index.h("svg", { class: "bs-input__calendar", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, index.h("rect", { x: "2", y: "3", width: "12", height: "11", rx: "1", stroke: "currentColor", "stroke-width": "1.2" }), index.h("path", { d: "M2 6.5H14", stroke: "currentColor", "stroke-width": "1.2" }), index.h("path", { d: "M5 1.5V4M11 1.5V4", stroke: "currentColor", "stroke-width": "1.2", "stroke-linecap": "round" })));
|
|
237
|
+
}
|
|
238
|
+
return index.h("slot", { name: "end-icon", onSlotchange: this.onEndIconSlotchange });
|
|
239
|
+
}
|
|
240
|
+
renderStandardControl() {
|
|
241
|
+
const nativeType = this.type === 'password' ? (this.passwordVisible ? 'text' : 'password') : this.type === 'dropdown' ? 'text' : this.type;
|
|
242
|
+
return (index.h("input", { id: "control", part: "control", class: "bs-input__control", type: nativeType, value: this.value, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.type === 'dropdown', min: this.type === 'number' ? this.min : undefined, max: this.type === 'number' ? this.max : undefined, step: this.type === 'number' ? this.step : undefined, "aria-describedby": this.error || this.description ? 'description-or-error' : undefined, "aria-invalid": this.error ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }));
|
|
243
|
+
}
|
|
244
|
+
renderSelectControl() {
|
|
245
|
+
return (index.h("select", { id: "control", part: "control", class: "bs-input__control", disabled: this.disabled, "aria-describedby": this.error || this.description ? 'description-or-error' : undefined, "aria-invalid": this.error ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }, this.options.map(opt => (index.h("option", { value: opt.value, selected: opt.value === this.value }, opt.label)))));
|
|
246
|
+
}
|
|
247
|
+
renderTextareaControl() {
|
|
248
|
+
return (index.h("textarea", { id: "control", part: "control", class: "bs-input__control bs-input__control--textarea", rows: this.rows, value: this.value, placeholder: this.placeholder, disabled: this.disabled, "aria-describedby": this.error || this.description ? 'description-or-error' : undefined, "aria-invalid": this.error ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }));
|
|
249
|
+
}
|
|
250
|
+
renderChipControl() {
|
|
251
|
+
return (index.h("div", { class: "bs-input__chips" }, this.chips.map(chip => (index.h("span", { part: "chip", class: "bs-input__chip" }, chip, index.h("button", { type: "button", class: "bs-input__chip-remove", "aria-label": `Remove ${chip}`, onClick: this.onChipRemove(chip) }, "\u00D7")))), index.h("input", { id: "control", part: "control", class: "bs-input__control bs-input__chip-input", type: "text", value: this.chipDraft, placeholder: this.placeholder, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, onInput: this.onChipDraftInput, onKeyDown: this.onChipDraftKeydown })));
|
|
252
|
+
}
|
|
253
|
+
renderInitialsControl() {
|
|
254
|
+
return [
|
|
255
|
+
index.h("select", { part: "control", class: "bs-input__control bs-input__title-select", disabled: this.disabled, onChange: this.onTitleChange }, this.titleOptions.map(opt => (index.h("option", { value: opt, selected: opt === this.initialsTitle }, opt)))),
|
|
256
|
+
index.h("input", { id: "control", part: "control", class: "bs-input__control", type: "text", value: this.value, placeholder: this.placeholder, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }),
|
|
257
|
+
];
|
|
258
|
+
}
|
|
259
|
+
renderCountryControl() {
|
|
260
|
+
return [
|
|
261
|
+
index.h("select", { part: "control", class: "bs-input__control bs-input__country-select", disabled: this.disabled, onChange: this.onCountryChange }, this.countryOptions.map(opt => (index.h("option", { value: opt.code, selected: opt.code === this.country }, opt.flagIcon ? `${opt.flagIcon} ` : '', opt.code, " ", opt.label)))),
|
|
262
|
+
index.h("input", { id: "control", part: "control", class: "bs-input__control", type: "text", value: this.value, placeholder: this.placeholder, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }),
|
|
263
|
+
];
|
|
264
|
+
}
|
|
265
|
+
renderControl() {
|
|
266
|
+
switch (this.type) {
|
|
267
|
+
case 'select':
|
|
268
|
+
return this.renderSelectControl();
|
|
269
|
+
case 'textarea':
|
|
270
|
+
return this.renderTextareaControl();
|
|
271
|
+
case 'chip':
|
|
272
|
+
return this.renderChipControl();
|
|
273
|
+
case 'initials':
|
|
274
|
+
return this.renderInitialsControl();
|
|
275
|
+
case 'country':
|
|
276
|
+
return this.renderCountryControl();
|
|
277
|
+
default:
|
|
278
|
+
return this.renderStandardControl();
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
renderField() {
|
|
282
|
+
const fieldClasses = [
|
|
283
|
+
'bs-input__field',
|
|
284
|
+
this.error ? 'bs-input__field--error' : '',
|
|
285
|
+
this.disabled ? 'bs-input__field--disabled' : '',
|
|
286
|
+
this.type === 'textarea' ? 'bs-input__field--textarea' : '',
|
|
287
|
+
this.type === 'chip' ? 'bs-input__field--chip' : '',
|
|
288
|
+
]
|
|
289
|
+
.filter(Boolean)
|
|
290
|
+
.join(' ');
|
|
291
|
+
const isDropdown = this.type === 'dropdown';
|
|
292
|
+
return (index.h("div", { class: "bs-input__field-wrapper" }, index.h("div", { part: "field", class: fieldClasses, onClick: isDropdown ? this.onDropdownToggle : undefined, onKeyDown: isDropdown ? this.onDropdownKeydown : undefined, "aria-haspopup": isDropdown ? 'listbox' : undefined, "aria-expanded": isDropdown ? String(this.open) : undefined }, index.h("span", { part: "icon", class: `bs-input__icon ${this.showsIconArea ? 'bs-input__icon--visible' : ''}` }, this.renderIconContent()), this.renderControl(), index.h("span", { part: "end-icon", class: `bs-input__end-icon ${this.showsEndIconArea ? 'bs-input__end-icon--visible' : ''}` }, this.renderEndIconContent())), isDropdown && this.open && this.options.length > 0 && (index.h("bs-menu", { part: "menu", class: "bs-input__dropdown-menu", role: "listbox" }, this.options.map(option => (index.h("bs-menu-item", { key: option.value, onBsSelect: this.onDropdownOptionSelect(option) }, option.label)))))));
|
|
293
|
+
}
|
|
294
|
+
renderPinField() {
|
|
295
|
+
this.pinInputs = [];
|
|
296
|
+
return (index.h("div", { part: "field", class: `bs-input__field bs-input__field--pin ${this.disabled ? 'bs-input__field--disabled' : ''}` }, Array.from({ length: this.length }).map((_, i) => (index.h("input", { id: i === 0 ? 'control' : undefined, ref: el => (this.pinInputs[i] = el), part: "control", class: "bs-input__pin-cell", type: "text", inputMode: "numeric", maxLength: 1, value: this.value[i] ?? '', disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, onInput: this.onPinInput(i), onKeyDown: this.onPinKeydown(i) })))));
|
|
297
|
+
}
|
|
32
298
|
render() {
|
|
33
|
-
return (index.h("div", { key: '
|
|
299
|
+
return (index.h("div", { key: 'a929eee8f7b100f372763a259f5d5fed298c8dff', class: `bs-input ${this.error ? 'bs-input--error' : ''}` }, this.label && (
|
|
34
300
|
// "control" is a fixed id, not a generated one -- safe because Shadow DOM scopes ids
|
|
35
301
|
// to this instance's own shadow root, so it can never collide with another bs-input.
|
|
36
|
-
index.h("label", { key: '
|
|
302
|
+
index.h("label", { key: 'fba27eccc9a351caa58fd849aad54e9388de361c', part: "label", class: "bs-input__label", htmlFor: "control" }, this.label, this.required && (index.h("span", { key: 'd4852798433e75b6c4cac34a9fbc5f9c23c8925d', part: "required", class: "bs-input__required", "aria-hidden": "true" }, "*")))), this.type === 'pin' ? this.renderPinField() : this.renderField(), this.error ? (index.h("span", { id: "description-or-error", part: "error", class: "bs-input__error" }, index.h("svg", { part: "error-icon", class: "bs-input__error-icon", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, index.h("circle", { cx: "8", cy: "8", r: "6.5", stroke: "currentColor", "stroke-width": "1.2" }), index.h("path", { d: "M8 5V8.5", stroke: "currentColor", "stroke-width": "1.2", "stroke-linecap": "round" }), index.h("circle", { cx: "8", cy: "11", r: "0.75", fill: "currentColor" })), this.error)) : this.description ? (index.h("span", { id: "description-or-error", part: "description", class: "bs-input__description" }, this.description)) : null));
|
|
37
303
|
}
|
|
38
304
|
static get delegatesFocus() { return true; }
|
|
39
305
|
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-CVh-sqA_.js');
|
|
4
|
+
|
|
5
|
+
const bsMenuCss = () => `:host{display:block;--bs-menu-bg:var(--bs-surface-raised);--bs-menu-radius:var(--bs-border-radius-100);--bs-menu-padding-y:var(--bs-spacing-50);--bs-menu-gap:var(--bs-spacing-50);--bs-menu-shadow:var(--bs-shadow-sm)}.bs-menu{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--bs-menu-gap);background:var(--bs-menu-bg);border-radius:var(--bs-menu-radius);padding:var(--bs-menu-padding-y) 0;box-shadow:var(--bs-menu-shadow);font-family:inherit}`;
|
|
6
|
+
|
|
7
|
+
const BsMenu = class {
|
|
8
|
+
constructor(hostRef) {
|
|
9
|
+
index.registerInstance(this, hostRef);
|
|
10
|
+
}
|
|
11
|
+
render() {
|
|
12
|
+
return (index.h("div", { key: 'e49c52a18ea8c10399d818a00e0c6b748f0c9b8f', part: "list", class: "bs-menu", role: "menu" }, index.h("slot", { key: '7e8cef2af1a068d0ab31fc3aee0abf8b59645a08' })));
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
BsMenu.style = bsMenuCss();
|
|
16
|
+
|
|
17
|
+
const bsMenuItemCss = () => `:host{display:block;--bs-menu-item-radius:var(--bs-border-radius-100);--bs-menu-item-padding-y:var(--bs-spacing-100);--bs-menu-item-padding-x:var(--bs-spacing-150);--bs-menu-item-gap:var(--bs-spacing-100);--bs-menu-item-hover:var(--bs-color-neutral-container-hover);--bs-menu-item-pressed:var(--bs-color-neutral-container-pressed);--bs-menu-item-disabled-bg:var(--bs-surface-action-disabled);--bs-menu-item-icon-color:var(--bs-icon-default);--bs-menu-item-icon-color-disabled:var(--bs-icon-disabled);--bs-menu-item-color:var(--bs-text-muted);--bs-menu-item-color-disabled:var(--bs-text-on-disabled);--bs-menu-item-font-size:var(--bs-font-size-md);--bs-menu-item-line-height:var(--bs-line-height-body-md)}.bs-menu-item{box-sizing:border-box;display:flex;align-items:center;width:100%;height:48px;border:none;cursor:pointer;background:transparent;color:var(--bs-menu-item-color);font-family:inherit;border-radius:var(--bs-menu-item-radius);padding:var(--bs-menu-item-padding-y) var(--bs-menu-item-padding-x);gap:var(--bs-menu-item-gap);transition:background-color var(--bs-duration-fast) var(--bs-easing-standard)}.bs-menu-item:focus-visible{outline:2px solid var(--bs-border-neutral-focus);outline-offset:2px}.bs-menu-item:hover{background:var(--bs-menu-item-hover)}.bs-menu-item:active{background:var(--bs-menu-item-pressed)}.bs-menu-item--disabled{background:var(--bs-menu-item-disabled-bg);color:var(--bs-menu-item-color-disabled);cursor:not-allowed}.bs-menu-item--disabled:hover,.bs-menu-item--disabled:active{background:var(--bs-menu-item-disabled-bg)}.bs-menu-item--disabled .bs-menu-item__icon{color:var(--bs-menu-item-icon-color-disabled)}.bs-menu-item__icon{display:none;width:24px;height:24px;flex-shrink:0;color:var(--bs-menu-item-icon-color)}.bs-menu-item__icon--has-content{display:inline-flex;align-items:center;justify-content:center}.bs-menu-item__icon ::slotted(svg){width:24px;height:24px}.bs-menu-item__label{font-size:var(--bs-menu-item-font-size);line-height:calc(var(--bs-menu-item-line-height) * 1px);white-space:nowrap}`;
|
|
18
|
+
|
|
19
|
+
const BsMenuItem = class {
|
|
20
|
+
constructor(hostRef) {
|
|
21
|
+
index.registerInstance(this, hostRef);
|
|
22
|
+
this.bsSelect = index.createEvent(this, "bsSelect");
|
|
23
|
+
}
|
|
24
|
+
/** Disables the item: no hover/pressed/focus styling, no pointer cursor, not reachable by
|
|
25
|
+
* keyboard tabbing, and clicking it does not emit `bsSelect`. */
|
|
26
|
+
disabled = false;
|
|
27
|
+
/** Tracks whether the `icon` slot has assigned content, so the icon wrapper (and its gap) only
|
|
28
|
+
* renders when there's actually an icon to show. */
|
|
29
|
+
hasIcon = false;
|
|
30
|
+
/** Fires when the item is clicked. */
|
|
31
|
+
bsSelect;
|
|
32
|
+
onIconSlotchange = (ev) => {
|
|
33
|
+
this.hasIcon = ev.target.assignedNodes().length > 0;
|
|
34
|
+
};
|
|
35
|
+
onClick = () => {
|
|
36
|
+
if (this.disabled)
|
|
37
|
+
return;
|
|
38
|
+
this.bsSelect.emit();
|
|
39
|
+
};
|
|
40
|
+
render() {
|
|
41
|
+
return (index.h("button", { key: 'ddd19d6211c8fe3be1567f67ac74076ccd664235', type: "button", part: "item", role: "menuitem", class: `bs-menu-item ${this.disabled ? 'bs-menu-item--disabled' : ''}`, disabled: this.disabled, "aria-disabled": this.disabled ? 'true' : undefined, onClick: this.onClick }, index.h("span", { key: 'bee75c968706c83503a3461f263640c3fbfa12a9', part: "icon", class: `bs-menu-item__icon ${this.hasIcon ? 'bs-menu-item__icon--has-content' : ''}` }, index.h("slot", { key: '521e1f06cd42794e78e17de93f1318f2998f67bd', name: "icon", onSlotchange: this.onIconSlotchange })), index.h("span", { key: '0f65b70e59b7dbaa3e455a3f2ff73b50dcdb1b61', part: "label", class: "bs-menu-item__label" }, index.h("slot", { key: '31f5e8c8ce0996bfe26051918b378de82dffa63c' }))));
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
BsMenuItem.style = bsMenuItemCss();
|
|
45
|
+
|
|
46
|
+
exports.bs_menu = BsMenu;
|
|
47
|
+
exports.bs_menu_item = BsMenuItem;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-CVh-sqA_.js');
|
|
4
|
+
|
|
5
|
+
const bsSourceLinkCss = () => `:host{display:block;--bs-source-link-radius:var(--bs-border-radius-150);--bs-source-link-padding:var(--bs-spacing-150);--bs-source-link-gap:var(--bs-spacing-50);--bs-source-link-icon-gap:var(--bs-spacing-75);--bs-source-link-hover:var(--bs-surface-hover);--bs-source-link-pressed:var(--bs-surface-pressed);--bs-source-link-focus:var(--bs-border-neutral-focus);--bs-source-link-filename-color:var(--bs-text-default);--bs-source-link-meta-color:var(--bs-text-secondary);--bs-source-link-icon-color:var(--bs-icon-default);--bs-source-link-dot-color:var(--bs-text-secondary)}.bs-source-link{box-sizing:border-box;display:flex;align-items:center;gap:var(--bs-source-link-gap);width:100%;padding:var(--bs-source-link-padding);background:none;border:none;border-radius:var(--bs-source-link-radius);font-family:inherit;text-align:left;text-decoration:none;cursor:pointer;transition:background-color var(--bs-duration-fast) var(--bs-easing-standard)}.bs-source-link:hover,.bs-source-link:focus-visible{background:var(--bs-source-link-hover)}.bs-source-link:active{background:var(--bs-source-link-pressed)}.bs-source-link:focus-visible{outline:2px solid var(--bs-source-link-focus);outline-offset:1px}.bs-source-link__icon{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:16px;height:16px;color:var(--bs-source-link-icon-color)}.bs-source-link__left{display:flex;flex:1 0 0;flex-direction:column;gap:2px;min-width:0}.bs-source-link__filename-row{display:flex;align-items:center;gap:var(--bs-source-link-icon-gap);width:100%}.bs-source-link__filename{margin:0;overflow:hidden;color:var(--bs-source-link-filename-color);font-size:var(--bs-font-size-md);font-weight:var(--bs-font-weight-semibold);line-height:var(--bs-line-height-normal);text-overflow:ellipsis;white-space:nowrap}.bs-source-link__meta{display:flex;align-items:center;gap:var(--bs-spacing-50);padding-left:22px}.bs-source-link__source,.bs-source-link__version{color:var(--bs-source-link-meta-color);font-size:var(--bs-font-size-sm);line-height:var(--bs-line-height-normal);white-space:nowrap}.bs-source-link__dot{width:4px;height:4px;border-radius:50%;background:var(--bs-source-link-dot-color);flex-shrink:0}.bs-source-link__arrow{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:24px;height:24px;color:var(--bs-source-link-icon-color)}`;
|
|
6
|
+
|
|
7
|
+
const BsSourceLink = class {
|
|
8
|
+
constructor(hostRef) {
|
|
9
|
+
index.registerInstance(this, hostRef);
|
|
10
|
+
this.bsOpen = index.createEvent(this, "bsOpen");
|
|
11
|
+
}
|
|
12
|
+
/** The cited document's filename. */
|
|
13
|
+
fileName = 'Source';
|
|
14
|
+
/** The system/app the document came from (e.g. "HoltePortalen"). */
|
|
15
|
+
sourceName;
|
|
16
|
+
/** The document's version label (e.g. "v3.2"). Omit if the source has no version. */
|
|
17
|
+
version;
|
|
18
|
+
/** If set, renders the row as a link that opens this URL; otherwise as a button that only emits `bsOpen`. */
|
|
19
|
+
href;
|
|
20
|
+
/** `target` used when `href` is set. */
|
|
21
|
+
target = '_blank';
|
|
22
|
+
/** Fires on click/activation, whether or not `href` is set -- lets the consuming app log or handle the open. */
|
|
23
|
+
bsOpen;
|
|
24
|
+
onClick = () => {
|
|
25
|
+
this.bsOpen.emit();
|
|
26
|
+
};
|
|
27
|
+
render() {
|
|
28
|
+
const inner = [
|
|
29
|
+
index.h("span", { key: '0e55cdcd04b7d6574835c1b5b21c20ad804fc36c', class: "bs-source-link__left" }, index.h("span", { key: '989f52e1b6b0a353470d65f5e3d75e40486b3842', class: "bs-source-link__filename-row" }, index.h("span", { key: 'e21ccdb9b78d4db3b18ca07039d61632b4390d80', part: "icon", class: "bs-source-link__icon" }, index.h("slot", { key: 'fe35c5c3084af9ddba25db3c46c2d8bbe7e927d0', name: "icon" }, index.h(FileTextIcon, { key: '5612acc39809cca4d483ab22f2e0b1cb95cdb2e8' }))), index.h("p", { key: '39d92f5e7e7a50e943ff9a85efd314df5a2abf0b', part: "filename", class: "bs-source-link__filename" }, this.fileName)), index.h("span", { key: 'd2eace60d67a344cd2bf522af38950fd3275bea2', class: "bs-source-link__meta" }, this.sourceName && (index.h("span", { key: 'd8d3fa79fa888db77ef44f402fd8747eb2cecad1', part: "source", class: "bs-source-link__source" }, this.sourceName)), this.sourceName && this.version && index.h("span", { key: '738770f5c4b091e59832100a17bda2f2d251ed75', class: "bs-source-link__dot", "aria-hidden": "true" }), this.version && (index.h("span", { key: '56fcf72b43eebb138745d212e8bcaa680f808cd0', part: "version", class: "bs-source-link__version" }, this.version)))),
|
|
30
|
+
index.h("span", { key: 'da453b51265f923c19505645cb33832c93863179', part: "arrow", class: "bs-source-link__arrow", "aria-hidden": "true" }, index.h(ArrowUpRightIcon, { key: 'c23d308322df780d109691f87945bb511461304f' })),
|
|
31
|
+
];
|
|
32
|
+
return this.href ? (index.h("a", { class: "bs-source-link", href: this.href, target: this.target, rel: "noopener noreferrer", onClick: this.onClick }, inner)) : (index.h("button", { type: "button", class: "bs-source-link", onClick: this.onClick }, inner));
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const FileTextIcon = () => (index.h("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true" }, index.h("path", { d: "M9.5 1.5H4C3.73478 1.5 3.48043 1.60536 3.29289 1.79289C3.10536 1.98043 3 2.23478 3 2.5V13.5C3 13.7652 3.10536 14.0196 3.29289 14.2071C3.48043 14.3946 3.73478 14.5 4 14.5H12C12.2652 14.5 12.5196 14.3946 12.7071 14.2071C12.8946 14.0196 13 13.7652 13 13.5V5L9.5 1.5Z", stroke: "currentColor", "stroke-linecap": "round", "stroke-linejoin": "round" }), index.h("path", { d: "M9.5 1.5V5H13", stroke: "currentColor", "stroke-linecap": "round", "stroke-linejoin": "round" }), index.h("path", { d: "M5.5 8.5H10.5", stroke: "currentColor", "stroke-linecap": "round", "stroke-linejoin": "round" }), index.h("path", { d: "M5.5 11H10.5", stroke: "currentColor", "stroke-linecap": "round", "stroke-linejoin": "round" })));
|
|
36
|
+
const ArrowUpRightIcon = () => (index.h("svg", { width: "24", height: "24", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true" }, index.h("path", { d: "M6.25 13.75L13.75 6.25", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" }), index.h("path", { d: "M7.5 6.25H13.75V12.5", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" })));
|
|
37
|
+
BsSourceLink.style = bsSourceLinkCss();
|
|
38
|
+
|
|
39
|
+
exports.bs_source_link = BsSourceLink;
|
|
@@ -16,7 +16,7 @@ const BsTooltip = class {
|
|
|
16
16
|
*/
|
|
17
17
|
placement = 'top';
|
|
18
18
|
render() {
|
|
19
|
-
return (index.h("div", { key: '
|
|
19
|
+
return (index.h("div", { key: '7020be9b961d1370449ce37570ae0c9162bd6176', class: "bs-tooltip" }, index.h("span", { key: 'e21d62d8f701917c7a074c105a7509c9f4582f64', part: "arrow", class: "bs-tooltip__arrow" }), index.h("div", { key: 'f011584e85c9d10371f961e49d44b67a3983bd2e', part: "bubble", class: "bs-tooltip__bubble" }, index.h("slot", { key: 'f27da1c55a31d3e1a7ee330440ee9b4a3c577e9a' }))));
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
22
|
BsTooltip.style = bsTooltipCss();
|
package/dist/cjs/loader.cjs.js
CHANGED
|
@@ -5,7 +5,7 @@ var index = require('./index-CVh-sqA_.js');
|
|
|
5
5
|
const defineCustomElements = async (win, options) => {
|
|
6
6
|
if (typeof window === 'undefined') return undefined;
|
|
7
7
|
await index.globalScripts();
|
|
8
|
-
return index.bootstrapLazy([["bs-chatbot-header.cjs",[[769,"bs-chatbot-header",{"heading":[1],"expanded":[1540]}]]],["bs-ai-thinking.cjs",[[513,"bs-ai-thinking",{"label":[1]}]]],["bs-badge.cjs",[[769,"bs-badge",{"variant":[1]}]]],["bs-button.cjs",[[785,"bs-button",{"variant":[1],"size":[1],"disabled":[4],"type":[1],"ariaLabel":[1,"aria-label"],"hasIcon":[32],"hasEndIcon":[32],"hasLabel":[32]}]]],["bs-button-skeleton.cjs",[[513,"bs-button-skeleton",{"size":[1]}]]],["bs-card.cjs",[[769,"bs-card",{"surface":[1]}]]],["bs-chatbot-response-action.cjs",[[769,"bs-chatbot-response-action",{"sourcesCount":[2,"sources-count"],"menuOpen":[1540,"menu-open"]},[[4,"click","onDocumentClick"],[4,"keydown","onKeydown"]]]]],["bs-chatbot-suggestion-button.cjs",[[769,"bs-chatbot-suggestion-button",{"disabled":[4]}]]],["bs-composer.cjs",[[785,"bs-composer",{"variant":[1],"placeholder":[1],"value":[1],"state":[1],"ariaLabel":[1,"aria-label"]}]]],["bs-
|
|
8
|
+
return index.bootstrapLazy([["bs-input.cjs",[[785,"bs-input",{"value":[1025],"type":[1],"label":[1],"placeholder":[1],"description":[1],"error":[1],"disabled":[4],"required":[4],"step":[2],"min":[2],"max":[2],"options":[16],"rows":[2],"chips":[16],"titleOptions":[16],"initialsTitle":[1,"initials-title"],"countryOptions":[16],"country":[1],"length":[2],"open":[1540],"hasIcon":[32],"hasEndIcon":[32],"passwordVisible":[32],"chipDraft":[32]},[[0,"keydown","onHostKeydown"],[0,"focusout","onHostFocusOut"]]]]],["bs-chatbot-header.cjs",[[769,"bs-chatbot-header",{"heading":[1],"expanded":[1540]}]]],["bs-ai-disclaimer.cjs",[[257,"bs-ai-disclaimer"]]],["bs-ai-greeting.cjs",[[513,"bs-ai-greeting",{"assistantName":[1,"assistant-name"],"productName":[1,"product-name"]}]]],["bs-ai-thinking.cjs",[[513,"bs-ai-thinking",{"label":[1]}]]],["bs-attachment.cjs",[[513,"bs-attachment",{"type":[1],"fileName":[1,"file-name"],"imageSrc":[1,"image-src"],"imageAlt":[1,"image-alt"],"loading":[4],"removable":[4]}]]],["bs-attachment-list.cjs",[[769,"bs-attachment-list",{"ariaLabel":[1,"aria-label"],"canScrollRight":[32]}]]],["bs-badge.cjs",[[769,"bs-badge",{"variant":[1]}]]],["bs-button.cjs",[[785,"bs-button",{"variant":[1],"size":[1],"disabled":[4],"type":[1],"ariaLabel":[1,"aria-label"],"hasIcon":[32],"hasEndIcon":[32],"hasLabel":[32]}]]],["bs-button-skeleton.cjs",[[513,"bs-button-skeleton",{"size":[1]}]]],["bs-card.cjs",[[769,"bs-card",{"surface":[1]}]]],["bs-chatbot-feedback.cjs",[[513,"bs-chatbot-feedback",{"rating":[1538],"submitted":[1540],"comment":[1025],"heading":[1],"subtitle":[1]}]]],["bs-chatbot-response-action.cjs",[[769,"bs-chatbot-response-action",{"sourcesCount":[2,"sources-count"],"menuOpen":[1540,"menu-open"]},[[4,"click","onDocumentClick"],[4,"keydown","onKeydown"]]]]],["bs-chatbot-sources-drawer.cjs",[[769,"bs-chatbot-sources-drawer",{"heading":[1],"count":[2],"slottedCount":[32]}]]],["bs-chatbot-suggestion-button.cjs",[[769,"bs-chatbot-suggestion-button",{"disabled":[4]}]]],["bs-composer.cjs",[[785,"bs-composer",{"variant":[1],"placeholder":[1],"value":[1],"state":[1],"ariaLabel":[1,"aria-label"],"hasAttachments":[32]}]]],["bs-composer-status-banner.cjs",[[769,"bs-composer-status-banner",{"type":[1],"message":[1],"showIcon":[4,"show-icon"],"showButton":[4,"show-button"],"actionLabel":[1,"action-label"],"allowClose":[4,"allow-close"]}]]],["bs-data-table.cjs",[[513,"bs-data-table",{"columns":[16],"rows":[16],"sortColumn":[1,"sort-column"],"sortDirection":[1,"sort-direction"],"selectable":[4],"cellRenderer":[16],"selectedIds":[32]}]]],["bs-modal.cjs",[[769,"bs-modal",{"open":[1540],"heading":[1],"size":[1],"hasFooter":[32]},[[4,"keydown","onKeydown"],[4,"focusin","onFocusIn"]]]]],["bs-source-link.cjs",[[769,"bs-source-link",{"fileName":[1,"file-name"],"sourceName":[1,"source-name"],"version":[1],"href":[1],"target":[1]}]]],["bs-tooltip.cjs",[[769,"bs-tooltip",{"placement":[1]}]]],["bs-menu_2.cjs",[[257,"bs-menu"],[769,"bs-menu-item",{"disabled":[4],"hasIcon":[32]}]]]], options);
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
exports.setNonce = index.setNonce;
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"entries": [
|
|
3
|
+
"components/bs-attachment/bs-attachment.js",
|
|
3
4
|
"components/bs-badge/bs-badge.js",
|
|
4
5
|
"components/bs-button/bs-button.js",
|
|
5
6
|
"components/bs-card/bs-card.js",
|
|
6
7
|
"components/bs-composer/bs-composer.js",
|
|
8
|
+
"components/bs-composer-status-banner/bs-composer-status-banner.js",
|
|
7
9
|
"components/bs-data-table/bs-data-table.js",
|
|
8
10
|
"components/bs-modal/bs-modal.js",
|
|
11
|
+
"components/bs-ai-disclaimer/bs-ai-disclaimer.js",
|
|
12
|
+
"components/bs-ai-greeting/bs-ai-greeting.js",
|
|
9
13
|
"components/bs-ai-thinking/bs-ai-thinking.js",
|
|
14
|
+
"components/bs-attachment-list/bs-attachment-list.js",
|
|
10
15
|
"components/bs-button-skeleton/bs-button-skeleton.js",
|
|
16
|
+
"components/bs-chatbot-feedback/bs-chatbot-feedback.js",
|
|
11
17
|
"components/bs-chatbot-header/bs-chatbot-header.js",
|
|
12
18
|
"components/bs-chatbot-response-action/bs-chatbot-response-action.js",
|
|
19
|
+
"components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js",
|
|
13
20
|
"components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js",
|
|
14
21
|
"components/bs-input/bs-input.js",
|
|
15
22
|
"components/bs-menu/bs-menu.js",
|
|
16
23
|
"components/bs-menu-item/bs-menu-item.js",
|
|
24
|
+
"components/bs-source-link/bs-source-link.js",
|
|
17
25
|
"components/bs-tooltip/bs-tooltip.js"
|
|
18
26
|
],
|
|
19
27
|
"mixins": [],
|