@kyndryl-design-system/shidoka-applications 2.22.0 → 2.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ai/sourcesFeedback/aiSourcesFeedback.d.ts.map +1 -1
- package/components/ai/sourcesFeedback/aiSourcesFeedback.js +3 -3
- package/components/ai/sourcesFeedback/aiSourcesFeedback.js.map +1 -1
- package/components/reusable/pagination/Pagination.d.ts +2 -0
- package/components/reusable/pagination/Pagination.d.ts.map +1 -1
- package/components/reusable/pagination/Pagination.js +6 -5
- package/components/reusable/pagination/Pagination.js.map +1 -1
- package/components/reusable/pagination/constants.sample.d.ts +1 -0
- package/components/reusable/pagination/constants.sample.d.ts.map +1 -1
- package/components/reusable/pagination/index.js +1 -1
- package/components/reusable/pagination/pagination-navigation-buttons.d.ts +13 -0
- package/components/reusable/pagination/pagination-navigation-buttons.d.ts.map +1 -1
- package/components/reusable/pagination/pagination-navigation-buttons.js +22 -8
- package/components/reusable/pagination/pagination-navigation-buttons.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiSourcesFeedback.d.ts","sourceRoot":"","sources":["../../../../src/components/ai/sourcesFeedback/aiSourcesFeedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAoBvC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,uBAAuB,CAAC;AAW/B;;;;;;;;GAQG;AAEH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,QAAgB;IAEtC,uDAAuD;IAEvD,aAAa,UAAS;IAEtB,2DAA2D;IAE3D,cAAc,UAAS;IAEvB,0DAA0D;IAE1D,eAAe,UAAS;IAExB,6DAA6D;IAE7D,gBAAgB,UAAS;IAEzB,0DAA0D;IAE1D,gBAAgB,UAAS;IAEzB,iCAAiC;IAEjC,WAAW;;;;;;;MAAuB;IAElC,yBAAyB;IAEzB,SAAS,SAAW;IAEpB;;OAEG;IAEH,WAAW,SAAK;IAEhB;;OAEG;IAEH,aAAa,UAAS;IAEtB;;OAEG;IAEH,YAAY;;;;;;;MAAuB;IAEnC;;OAEG;IAEH,qBAAqB,EAAE,GAAG,CAAQ;IAElC;;;OAGG;IAEH,UAAU,EAAG,GAAG,CAAC;IAEjB;;OAEG;IACM,kBAAkB,SAAK;IAEhC;;OAEG;IACM,oBAAoB,SAAK;IAEzB,MAAM;IAuKf,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"aiSourcesFeedback.d.ts","sourceRoot":"","sources":["../../../../src/components/ai/sourcesFeedback/aiSourcesFeedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAoBvC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,uBAAuB,CAAC;AAW/B;;;;;;;;GAQG;AAEH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,QAAgB;IAEtC,uDAAuD;IAEvD,aAAa,UAAS;IAEtB,2DAA2D;IAE3D,cAAc,UAAS;IAEvB,0DAA0D;IAE1D,eAAe,UAAS;IAExB,6DAA6D;IAE7D,gBAAgB,UAAS;IAEzB,0DAA0D;IAE1D,gBAAgB,UAAS;IAEzB,iCAAiC;IAEjC,WAAW;;;;;;;MAAuB;IAElC,yBAAyB;IAEzB,SAAS,SAAW;IAEpB;;OAEG;IAEH,WAAW,SAAK;IAEhB;;OAEG;IAEH,aAAa,UAAS;IAEtB;;OAEG;IAEH,YAAY;;;;;;;MAAuB;IAEnC;;OAEG;IAEH,qBAAqB,EAAE,GAAG,CAAQ;IAElC;;;OAGG;IAEH,UAAU,EAAG,GAAG,CAAC;IAEjB;;OAEG;IACM,kBAAkB,SAAK;IAEhC;;OAEG;IACM,oBAAoB,SAAK;IAEzB,MAAM;IAuKf,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,oBAAoB;IAY5B,SAAS,CAAC,iBAAiB;IAI3B,OAAO,CAAC,oBAAoB;IAgBnB,UAAU,CAAC,YAAY,EAAE,GAAG;cAMlB,OAAO,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;CAQpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,yBAAyB,EAAE,iBAAiB,CAAC;KAC9C;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as e}from"../../../vendor/tslib-53a81efe.js";import{n as t,t as s,l as i,c as o,e as n}from"../../../vendor/lit-461e78e6.js";import{i as d,s as a,x as l}from"../../../vendor/lit-element-c6c02f24.js";import{d as r}from"../../../vendor/deepmerge-ts-e62363e6.js";import{e as c}from"../../../vendor/lit-html-29220869.js";import{f as p,D as
|
|
1
|
+
import{_ as e}from"../../../vendor/tslib-53a81efe.js";import{n as t,t as s,l as i,c as o,e as n}from"../../../vendor/lit-461e78e6.js";import{i as d,s as a,x as l}from"../../../vendor/lit-element-c6c02f24.js";import{d as r}from"../../../vendor/deepmerge-ts-e62363e6.js";import{e as c}from"../../../vendor/lit-html-29220869.js";import{f as p,D as b,E as h,F as k,G as u,c as m}from"../../../vendor/@kyndryl-design-system/shidoka-icons-ab960376.js";import"../../reusable/link/link.js";import"../../reusable/card/card.js";import"../../reusable/card/vitalCard.skeleton.js";import"../../reusable/card/informationalCard.skeleton.js";import"../../reusable/button/button.js";import"../../reusable/link/defs.js";import"../../reusable/loaders/skeleton.js";import"../../../cardSample-37bc81e6.js";import"../../../common/helpers/helpers.js";import"../../reusable/button/defs.js";var v=d`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -137,7 +137,7 @@ import{_ as e}from"../../../vendor/tslib-53a81efe.js";import{n as t,t as s,l as
|
|
|
137
137
|
@on-click=${e=>this._handleClick(e,"feedback","positive")}
|
|
138
138
|
>
|
|
139
139
|
<span slot="icon">
|
|
140
|
-
${o(this.thumbsUpClickCount%2==0?h
|
|
140
|
+
${o(this.thumbsUpClickCount%2==0?b:h)}
|
|
141
141
|
</span>
|
|
142
142
|
</kyn-button>
|
|
143
143
|
</div>
|
|
@@ -223,5 +223,5 @@ import{_ as e}from"../../../vendor/tslib-53a81efe.js";import{n as t,t as s,l as
|
|
|
223
223
|
|
|
224
224
|
<slot name="feedback-form"></slot>
|
|
225
225
|
</div>
|
|
226
|
-
`}_handleClick(e,t,s){var i;if(e.preventDefault(),"sources"===t&&this.sourcesDisabled||"feedback"===t&&this.feedbackDisabled)return;(null===(i=e.target.id)||void 0===i?void 0:i.includes("kyn-feedback-title"))&&s&&this._updateFeedbackCounts(s),("sources"===t||this._shouldEmitFeedbackEvent(s))&&this._emitToggleEvent(t,s)}_updateFeedbackCounts(e){const t="positive"===e&&this.thumbsUpClickCount%2!=0||"negative"===e&&this.thumbsDownClickCount%2!=0;"positive"===e?(this.thumbsUpClickCount++,this.thumbsDownClickCount-=this.thumbsDownClickCount%2):(this.thumbsDownClickCount++,this.thumbsUpClickCount-=this.thumbsUpClickCount%2),t&&this.dispatchEvent(new CustomEvent("on-feedback-deselected",{detail:{feedbackType:e},bubbles:!0,composed:!0}))}_shouldEmitFeedbackEvent(e){if(!e)return!1;const t=e=>e%2!=0;return"positive"===e&&(t(this.thumbsUpClickCount)||this.feedbackOpened&&!t(this.thumbsUpClickCount))||"negative"===e&&(t(this.thumbsDownClickCount)||this.feedbackOpened&&!t(this.thumbsDownClickCount))}_emitToggleEvent(e,t){"sources"===e?(this.sourcesOpened=!this.sourcesOpened,this.feedbackOpened=!1):"feedback"===e&&(this.sourcesOpened=!1,this._toggleFeedbackPanel(t)),this.dispatchEvent(new CustomEvent("on-toggle",{detail:{sourcesOpened:this.sourcesOpened,feedbackOpened:this.feedbackOpened,selectedFeedbackType:this._selectedFeedbackType}}))}_toggleFeedbackPanel(e){e&&(this._selectedFeedbackType===e&&this.feedbackOpened?(this.feedbackOpened=!1,this._selectedFeedbackType=null):(this.feedbackOpened=!0,this._selectedFeedbackType=e))}_handleSlotChange(){this._toggleLimitRevealed(this.limitRevealed)}_toggleLimitRevealed(e){this.limitRevealed=e,this._sourceEls.forEach(((e,t)=>{this.revealAllSources||this.limitRevealed||t<this._limitCount?e.style.display="block":e.style.display="none"}))}willUpdate(e){e.has("textStrings")&&(this._textStrings=r(y,this.textStrings))}updated(e){e.has("revealAllSources")&&void 0!==e.get("revealAllSources")&&this._toggleLimitRevealed(!1)}};g.styles=[v],e([t({type:Boolean})],g.prototype,"sourcesOpened",void 0),e([t({type:Boolean})],g.prototype,"feedbackOpened",void 0),e([t({type:Boolean})],g.prototype,"sourcesDisabled",void 0),e([t({type:Boolean})],g.prototype,"feedbackDisabled",void 0),e([t({type:Boolean})],g.prototype,"revealAllSources",void 0),e([t({type:Object})],g.prototype,"textStrings",void 0),e([t({type:String})],g.prototype,"closeText",void 0),e([s()],g.prototype,"_limitCount",void 0),e([s()],g.prototype,"limitRevealed",void 0),e([s()],g.prototype,"_textStrings",void 0),e([s()],g.prototype,"_selectedFeedbackType",void 0),e([i({slot:"sources"})],g.prototype,"_sourceEls",void 0),e([s()],g.prototype,"thumbsUpClickCount",void 0),e([s()],g.prototype,"thumbsDownClickCount",void 0),g=e([n("kyn-ai-sources-feedback")],g);export{g as AISourcesFeedback};
|
|
226
|
+
`}_handleClick(e,t,s){var i;if(e.preventDefault(),"sources"===t&&this.sourcesDisabled||"feedback"===t&&this.feedbackDisabled)return;(null===(i=e.target.id)||void 0===i?void 0:i.includes("kyn-feedback-title"))&&s&&this._updateFeedbackCounts(s),("sources"===t||this._shouldEmitFeedbackEvent(s))&&this._emitToggleEvent(t,s)}_updateFeedbackCounts(e){const t="positive"===e&&this.thumbsUpClickCount%2!=0||"negative"===e&&this.thumbsDownClickCount%2!=0;"positive"===e?(this.thumbsUpClickCount++,this.thumbsDownClickCount-=this.thumbsDownClickCount%2):(this.thumbsDownClickCount++,this.thumbsUpClickCount-=this.thumbsUpClickCount%2),t&&this.dispatchEvent(new CustomEvent("on-feedback-deselected",{detail:{feedbackType:e},bubbles:!0,composed:!0}))}_shouldEmitFeedbackEvent(e){if(!e)return!1;const t=e=>e%2!=0;return"positive"===e&&(t(this.thumbsUpClickCount)||this.feedbackOpened&&!t(this.thumbsUpClickCount))||"negative"===e&&(t(this.thumbsDownClickCount)||this.feedbackOpened&&!t(this.thumbsDownClickCount))}_emitToggleEvent(e,t){"sources"===e?(this.sourcesOpened=!this.sourcesOpened,this.feedbackOpened=!1):"feedback"===e&&(this.sourcesOpened=!1,this._toggleFeedbackPanel(t)),this.dispatchEvent(new CustomEvent("on-toggle",{detail:{sourcesOpened:this.sourcesOpened,feedbackOpened:this.feedbackOpened,selectedFeedbackType:this._selectedFeedbackType},bubbles:!0,composed:!0}))}_toggleFeedbackPanel(e){e&&(this._selectedFeedbackType===e&&this.feedbackOpened?(this.feedbackOpened=!1,this._selectedFeedbackType=null):(this.feedbackOpened=!0,this._selectedFeedbackType=e))}_handleSlotChange(){this._toggleLimitRevealed(this.limitRevealed)}_toggleLimitRevealed(e){this.limitRevealed=e,this._sourceEls.forEach(((e,t)=>{this.revealAllSources||this.limitRevealed||t<this._limitCount?e.style.display="block":e.style.display="none"}))}willUpdate(e){e.has("textStrings")&&(this._textStrings=r(y,this.textStrings))}updated(e){e.has("revealAllSources")&&void 0!==e.get("revealAllSources")&&this._toggleLimitRevealed(!1)}};g.styles=[v],e([t({type:Boolean})],g.prototype,"sourcesOpened",void 0),e([t({type:Boolean})],g.prototype,"feedbackOpened",void 0),e([t({type:Boolean})],g.prototype,"sourcesDisabled",void 0),e([t({type:Boolean})],g.prototype,"feedbackDisabled",void 0),e([t({type:Boolean})],g.prototype,"revealAllSources",void 0),e([t({type:Object})],g.prototype,"textStrings",void 0),e([t({type:String})],g.prototype,"closeText",void 0),e([s()],g.prototype,"_limitCount",void 0),e([s()],g.prototype,"limitRevealed",void 0),e([s()],g.prototype,"_textStrings",void 0),e([s()],g.prototype,"_selectedFeedbackType",void 0),e([i({slot:"sources"})],g.prototype,"_sourceEls",void 0),e([s()],g.prototype,"thumbsUpClickCount",void 0),e([s()],g.prototype,"thumbsDownClickCount",void 0),g=e([n("kyn-ai-sources-feedback")],g);export{g as AISourcesFeedback};
|
|
227
227
|
//# sourceMappingURL=aiSourcesFeedback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiSourcesFeedback.js","sources":["../../../../src/components/ai/sourcesFeedback/aiSourcesFeedback.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport {\n customElement,\n property,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { deepmerge } from 'deepmerge-ts';\nimport { classMap } from 'lit-html/directives/class-map.js';\n\nimport stylesheet from './aiSourcesFeedback.scss';\n\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport chevronIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-down.svg';\nimport thumbsUpIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/thumbs-up.svg';\nimport thumbsDownIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/thumbs-down.svg';\nimport thumbsUpFilledIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/thumbs-up-filled.svg';\nimport thumbsDownFilledIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/thumbs-down-filled.svg';\nimport closeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\nimport '../../reusable/link';\nimport '../../reusable/card';\nimport '../../reusable/button';\n\nconst _defaultTextStrings = {\n sourcesText: 'Sources',\n foundSources: 'Found sources',\n showMore: 'Show more',\n showLess: 'Show less',\n positiveFeedback: 'Share what you liked',\n negativeFeedback: 'Help us improve',\n};\n\n/**\n * AISourcesFeedback Component.\n *\n * @slot copy - copy button\n * @slot sources - source cards in source panel.\n * @slot feedback-form - Positive feedback form.\n * @fires on-toggle - Emits the `opened` state when the panel item opens/closes.\n * @fires on-feedback-deselected - Emits when thumbs-up or thumbs-down button is deselected.\n */\n\n@customElement('kyn-ai-sources-feedback')\nexport class AISourcesFeedback extends LitElement {\n static override styles = [stylesheet];\n\n /** expandable anchor opened state for Sources used. */\n @property({ type: Boolean })\n sourcesOpened = false;\n\n /** expandable anchor opened state for Feedback buttons. */\n @property({ type: Boolean })\n feedbackOpened = false;\n\n /** expandable anchor disabled state for Sources used.. */\n @property({ type: Boolean })\n sourcesDisabled = false;\n\n /** expandable anchor disabled state for Feedback buttons. */\n @property({ type: Boolean })\n feedbackDisabled = false;\n\n /** Limits visible sources behind a \"Show more\" button. */\n @property({ type: Boolean })\n revealAllSources = false;\n\n /** Text string customization. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Close button text. */\n @property({ type: String })\n closeText = 'Close';\n\n /** Number of sources visible when limited.\n * @internal\n */\n @state()\n _limitCount = 4;\n\n /** Sources limit visibility.\n * @internal\n */\n @state()\n limitRevealed = false;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n /** Selecting Positive or Negative Feedback\n * @internal\n */\n @state()\n _selectedFeedbackType: any = null;\n\n /**\n * Queries slotted sources.\n * @ignore\n */\n @queryAssignedElements({ slot: 'sources' })\n _sourceEls!: any;\n\n /** Tracks the number of clicks on thumbs up icon\n * @internal\n */\n @state() thumbsUpClickCount = 0;\n\n /** Tracks the number of clicks on thumbs down icon\n * @internal\n */\n @state() thumbsDownClickCount = 0;\n\n override render() {\n const classesSources: any = classMap({\n 'kyn-sources': true,\n opened: this.sourcesOpened,\n disabled: this.sourcesDisabled,\n });\n const classesFeedback1: any = classMap({\n 'kyn-pos-feedback': true,\n disabled:\n this.feedbackDisabled && this._selectedFeedbackType === 'positive',\n });\n const classesFeedback2: any = classMap({\n 'kyn-neg-feedback': true,\n disabled:\n this.feedbackDisabled && this._selectedFeedbackType === 'positive',\n });\n return html`\n <div class=\"action-bar\">\n <div class=\"left-div\">\n <slot name=\"copy\"></slot>\n\n <div class=\"${classesSources}\">\n <kyn-button\n kind=\"ghost\"\n size=\"small\"\n class=\"kyn-sources-title\"\n iconPosition=\"right\"\n aria-controls=\"kyn-sources-body\"\n aria-expanded=${this.sourcesOpened}\n ?disabled=${this.sourcesDisabled}\n @on-click=\"${(e: Event) => this._handleClick(e, 'sources')}\"\n id=\"kyn-sources-title\"\n >\n <span>${this._textStrings.sourcesText}</span>\n <span class=\"expand-icon\" slot=\"icon\"\n >${unsafeSVG(chevronIcon)}</span\n >\n </kyn-button>\n </div>\n </div>\n\n <div class=\"right-div\">\n <div class=\"${classesFeedback1}\">\n <kyn-button\n kind=\"ghost\"\n size=\"small\"\n id=\"kyn-feedback-title-positive\"\n class=\"kyn-feedback-title\"\n aria-controls=\"kyn-feedback-body\"\n aria-expanded=${this.feedbackOpened}\n ?disabled=${this.feedbackDisabled}\n description=${this._textStrings.positiveFeedback}\n @on-click=${(e: Event) =>\n this._handleClick(e, 'feedback', 'positive')}\n >\n <span slot=\"icon\">\n ${unsafeSVG(\n this.thumbsUpClickCount % 2 === 0\n ? thumbsUpIcon\n : thumbsUpFilledIcon\n )}\n </span>\n </kyn-button>\n </div>\n\n <div class=\"${classesFeedback2}\">\n <kyn-button\n kind=\"ghost\"\n size=\"small\"\n id=\"kyn-feedback-title-negative\"\n class=\"kyn-feedback-title\"\n aria-controls=\"kyn-feedback-body\"\n aria-expanded=${this.feedbackOpened}\n ?disabled=${this.feedbackDisabled}\n description=${this._textStrings.negativeFeedback}\n @on-click=\"${(e: Event) =>\n this._handleClick(e, 'feedback', 'negative')}\"\n >\n <span slot=\"icon\"\n >${unsafeSVG(\n this.thumbsDownClickCount % 2 === 0\n ? thumbsDownIcon\n : thumbsDownFilledIcon\n )}\n </span>\n </kyn-button>\n </div>\n </div>\n </div>\n\n <div\n class=\"${classMap({\n opened: this.sourcesOpened,\n 'kyn-sources-body': true,\n })}\"\n id=\"kyn-sources-body\"\n role=\"region\"\n aria-labelledby=\"kyn-sources-title\"\n >\n <div class=\"close-container\">\n <kyn-button\n class=\"close\"\n @on-click=${(e: Event) => this._handleClick(e, 'sources')}\n }}\n kind=\"ghost\"\n size=\"small\"\n description=${this.closeText}\n >\n <span slot=\"icon\">${unsafeSVG(closeIcon)}</span>\n </kyn-button>\n </div>\n\n <div class=\"found-sources\">\n ${this._textStrings.foundSources} (${this._sourceEls.length}) :\n </div>\n <div class=\"card-container\">\n <slot name=\"sources\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n ${!this.revealAllSources && this._sourceEls.length > this._limitCount\n ? html`\n <kyn-button\n class=\"reveal-toggle\"\n kind=\"ghost\"\n size=\"small\"\n @on-click=${() =>\n this._toggleLimitRevealed(!this.limitRevealed)}\n >\n ${this.limitRevealed\n ? html`${this._textStrings.showLess}`\n : html`\n ${this._textStrings.showMore}\n (${this._sourceEls.length - this._limitCount})\n `}\n </kyn-button>\n `\n : null}\n </div>\n\n <div\n class=\"${classMap({\n opened: this.feedbackOpened,\n 'kyn-feedback-body': true,\n })}\"\n id=\"kyn-feedback-body\"\n role=\"region\"\n aria-labelledby=\"kyn-feedback-title-${this._selectedFeedbackType\n ? 'positive'\n : 'negative'}\"\n >\n <div class=\"close-container\">\n <kyn-button\n class=\"close\"\n description=${this.closeText}\n @on-click=${(e: Event) =>\n this._handleClick(e, 'feedback', this._selectedFeedbackType)}\n }}\n kind=\"ghost\"\n size=\"small\"\n >\n <span slot=\"icon\">${unsafeSVG(closeIcon)}</span>\n </kyn-button>\n </div>\n\n <slot name=\"feedback-form\"></slot>\n </div>\n `;\n }\n private _handleClick(\n e: Event,\n panel: 'sources' | 'feedback',\n feedbackType?: 'positive' | 'negative'\n ) {\n e.preventDefault();\n\n if (\n (panel === 'sources' && this.sourcesDisabled) ||\n (panel === 'feedback' && this.feedbackDisabled)\n ) {\n return;\n }\n\n const target = e.target as HTMLElement;\n const isFeedbackButton = target.id?.includes('kyn-feedback-title');\n\n if (isFeedbackButton && feedbackType) {\n this._updateFeedbackCounts(feedbackType);\n }\n\n if (panel === 'sources' || this._shouldEmitFeedbackEvent(feedbackType)) {\n this._emitToggleEvent(panel, feedbackType);\n }\n }\n\n private _updateFeedbackCounts(feedbackType: 'positive' | 'negative') {\n // Checks if the feedbackType was already selected before updating the counts.\n const wasSelected =\n (feedbackType === 'positive' && this.thumbsUpClickCount % 2 !== 0) ||\n (feedbackType === 'negative' && this.thumbsDownClickCount % 2 !== 0);\n\n if (feedbackType === 'positive') {\n this.thumbsUpClickCount++;\n this.thumbsDownClickCount -= this.thumbsDownClickCount % 2;\n } else {\n this.thumbsDownClickCount++;\n this.thumbsUpClickCount -= this.thumbsUpClickCount % 2;\n }\n\n if (wasSelected) {\n this.dispatchEvent(\n new CustomEvent('on-feedback-deselected', {\n detail: { feedbackType },\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n private _shouldEmitFeedbackEvent(\n feedbackType?: 'positive' | 'negative'\n ): boolean {\n if (!feedbackType) return false;\n const isOddClick = (count: number) => count % 2 !== 0;\n\n return (\n (feedbackType === 'positive' &&\n (isOddClick(this.thumbsUpClickCount) ||\n (this.feedbackOpened && !isOddClick(this.thumbsUpClickCount)))) ||\n (feedbackType === 'negative' &&\n (isOddClick(this.thumbsDownClickCount) ||\n (this.feedbackOpened && !isOddClick(this.thumbsDownClickCount))))\n );\n }\n\n private _emitToggleEvent(\n panel: 'sources' | 'feedback',\n feedbackType?: 'positive' | 'negative'\n ) {\n if (panel === 'sources') {\n this.sourcesOpened = !this.sourcesOpened;\n this.feedbackOpened = false;\n } else if (panel === 'feedback') {\n this.sourcesOpened = false;\n this._toggleFeedbackPanel(feedbackType);\n }\n\n this.dispatchEvent(\n new CustomEvent('on-toggle', {\n detail: {\n sourcesOpened: this.sourcesOpened,\n feedbackOpened: this.feedbackOpened,\n selectedFeedbackType: this._selectedFeedbackType,\n },\n })\n );\n }\n\n private _toggleFeedbackPanel(feedbackType?: 'positive' | 'negative') {\n if (!feedbackType) return;\n\n if (this._selectedFeedbackType === feedbackType && this.feedbackOpened) {\n this.feedbackOpened = false;\n this._selectedFeedbackType = null;\n } else {\n this.feedbackOpened = true;\n this._selectedFeedbackType = feedbackType;\n }\n }\n\n protected _handleSlotChange() {\n this._toggleLimitRevealed(this.limitRevealed);\n }\n\n private _toggleLimitRevealed(revealed: boolean) {\n this.limitRevealed = revealed;\n\n this._sourceEls.forEach((sourceEl: any, index: any) => {\n if (this.revealAllSources || this.limitRevealed) {\n sourceEl.style.display = 'block';\n } else {\n if (index < this._limitCount) {\n sourceEl.style.display = 'block';\n } else {\n sourceEl.style.display = 'none';\n }\n }\n });\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n protected override updated(changedProps: any): void {\n if (\n changedProps.has('revealAllSources') &&\n changedProps.get('revealAllSources') !== undefined\n ) {\n this._toggleLimitRevealed(false);\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-ai-sources-feedback': AISourcesFeedback;\n }\n}\n"],"names":["_defaultTextStrings","sourcesText","foundSources","showMore","showLess","positiveFeedback","negativeFeedback","AISourcesFeedback","LitElement","constructor","this","sourcesOpened","feedbackOpened","sourcesDisabled","feedbackDisabled","revealAllSources","textStrings","closeText","_limitCount","limitRevealed","_textStrings","_selectedFeedbackType","thumbsUpClickCount","thumbsDownClickCount","render","classesSources","classMap","opened","disabled","classesFeedback1","classesFeedback2","html","e","_handleClick","unsafeSVG","chevronIcon","thumbsUpIcon","thumbsUpFilledIcon","thumbsDownIcon","thumbsDownFilledIcon","closeIcon","_sourceEls","length","_handleSlotChange","_toggleLimitRevealed","panel","feedbackType","preventDefault","_a","target","id","includes","_updateFeedbackCounts","_shouldEmitFeedbackEvent","_emitToggleEvent","wasSelected","dispatchEvent","CustomEvent","detail","bubbles","composed","isOddClick","count","_toggleFeedbackPanel","selectedFeedbackType","revealed","forEach","sourceEl","index","style","display","willUpdate","changedProps","has","deepmerge","updated","undefined","get","styles","stylesheet","__decorate","property","type","Boolean","prototype","Object","String","state","queryAssignedElements","slot","customElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwBA,MAAMA,EAAsB,CAC1BC,YAAa,UACbC,aAAc,gBACdC,SAAU,YACVC,SAAU,YACVC,iBAAkB,uBAClBC,iBAAkB,mBAcb,IAAMC,EAAN,cAAgCC,EAAhC,WAAAC,uBAKLC,KAAaC,eAAG,EAIhBD,KAAcE,gBAAG,EAIjBF,KAAeG,iBAAG,EAIlBH,KAAgBI,kBAAG,EAInBJ,KAAgBK,kBAAG,EAInBL,KAAWM,YAAGhB,EAIdU,KAASO,UAAG,QAMZP,KAAWQ,YAAG,EAMdR,KAAaS,eAAG,EAMhBT,KAAYU,aAAGpB,EAMfU,KAAqBW,sBAAQ,KAYpBX,KAAkBY,mBAAG,EAKrBZ,KAAoBa,qBAAG,CAiTjC,CA/SU,MAAAC,GACP,MAAMC,EAAsBC,EAAS,CACnC,eAAe,EACfC,OAAQjB,KAAKC,cACbiB,SAAUlB,KAAKG,kBAEXgB,EAAwBH,EAAS,CACrC,oBAAoB,EACpBE,SACElB,KAAKI,kBAAmD,aAA/BJ,KAAKW,wBAE5BS,EAAwBJ,EAAS,CACrC,oBAAoB,EACpBE,SACElB,KAAKI,kBAAmD,aAA/BJ,KAAKW,wBAElC,OAAOU,CAAI;;;;;wBAKSN;;;;;;;8BAOMf,KAAKC;0BACTD,KAAKG;2BACHmB,GAAatB,KAAKuB,aAAaD,EAAG;;;sBAGxCtB,KAAKU,aAAanB;;mBAErBiC,EAAUC;;;;;;;wBAOLN;;;;;;;8BAOMnB,KAAKE;0BACTF,KAAKI;4BACHJ,KAAKU,aAAaf;0BACnB2B,GACXtB,KAAKuB,aAAaD,EAAG,WAAY;;;kBAG/BE,EACAxB,KAAKY,mBAAqB,GAAM,EAC5Bc,EACAC;;;;;wBAMEP;;;;;;;8BAOMpB,KAAKE;0BACTF,KAAKI;4BACHJ,KAAKU,aAAad;2BAClB0B,GACZtB,KAAKuB,aAAaD,EAAG,WAAY;;;mBAG9BE,EACDxB,KAAKa,qBAAuB,GAAM,EAC9Be,EACAC;;;;;;;;iBASLb,EAAS,CAChBC,OAAQjB,KAAKC,cACb,oBAAoB;;;;;;;;wBASLqB,GAAatB,KAAKuB,aAAaD,EAAG;;;;0BAIjCtB,KAAKO;;gCAECiB,EAAUM;;;;;YAK9B9B,KAAKU,aAAalB,iBAAiBQ,KAAK+B,WAAWC;;;6CAGlBhC,KAAKiC;;WAEvCjC,KAAKK,kBAAoBL,KAAK+B,WAAWC,OAAShC,KAAKQ,YACtDa,CAAI;;;;;4BAKY,IACVrB,KAAKkC,sBAAsBlC,KAAKS;;kBAEhCT,KAAKS,cACHY,CAAI,GAAGrB,KAAKU,aAAahB,WACzB2B,CAAI;wBACArB,KAAKU,aAAajB;yBACjBO,KAAK+B,WAAWC,OAAShC,KAAKQ;;;cAI3C;;;;iBAIKQ,EAAS,CAChBC,OAAQjB,KAAKE,eACb,qBAAqB;;;8CAIeF,KAAKW,sBACvC,WACA;;;;;0BAKcX,KAAKO;wBACNe,GACXtB,KAAKuB,aAAaD,EAAG,WAAYtB,KAAKW;;;;;gCAKpBa,EAAUM;;;;;;KAOvC,CACO,YAAAP,CACND,EACAa,EACAC,SAIA,GAFAd,EAAEe,iBAGW,YAAVF,GAAuBnC,KAAKG,iBAClB,aAAVgC,GAAwBnC,KAAKI,iBAE9B,QAIgC,QAATkC,EADVhB,EAAEiB,OACeC,UAAE,IAAAF,OAAA,EAAAA,EAAEG,SAAS,wBAErBL,GACtBpC,KAAK0C,sBAAsBN,IAGf,YAAVD,GAAuBnC,KAAK2C,yBAAyBP,KACvDpC,KAAK4C,iBAAiBT,EAAOC,EAEhC,CAEO,qBAAAM,CAAsBN,GAE5B,MAAMS,EACc,aAAjBT,GAA+BpC,KAAKY,mBAAqB,GAAM,GAC9C,aAAjBwB,GAA+BpC,KAAKa,qBAAuB,GAAM,EAE/C,aAAjBuB,GACFpC,KAAKY,qBACLZ,KAAKa,sBAAwBb,KAAKa,qBAAuB,IAEzDb,KAAKa,uBACLb,KAAKY,oBAAsBZ,KAAKY,mBAAqB,GAGnDiC,GACF7C,KAAK8C,cACH,IAAIC,YAAY,yBAA0B,CACxCC,OAAQ,CAAEZ,gBACVa,SAAS,EACTC,UAAU,IAIjB,CAEO,wBAAAP,CACNP,GAEA,IAAKA,EAAc,OAAO,EAC1B,MAAMe,EAAcC,GAAkBA,EAAQ,GAAM,EAEpD,MACoB,aAAjBhB,IACEe,EAAWnD,KAAKY,qBACdZ,KAAKE,iBAAmBiD,EAAWnD,KAAKY,sBAC3B,aAAjBwB,IACEe,EAAWnD,KAAKa,uBACdb,KAAKE,iBAAmBiD,EAAWnD,KAAKa,sBAEhD,CAEO,gBAAA+B,CACNT,EACAC,GAEc,YAAVD,GACFnC,KAAKC,eAAiBD,KAAKC,cAC3BD,KAAKE,gBAAiB,GACH,aAAViC,IACTnC,KAAKC,eAAgB,EACrBD,KAAKqD,qBAAqBjB,IAG5BpC,KAAK8C,cACH,IAAIC,YAAY,YAAa,CAC3BC,OAAQ,CACN/C,cAAeD,KAAKC,cACpBC,eAAgBF,KAAKE,eACrBoD,qBAAsBtD,KAAKW,yBAIlC,CAEO,oBAAA0C,CAAqBjB,GACtBA,IAEDpC,KAAKW,wBAA0ByB,GAAgBpC,KAAKE,gBACtDF,KAAKE,gBAAiB,EACtBF,KAAKW,sBAAwB,OAE7BX,KAAKE,gBAAiB,EACtBF,KAAKW,sBAAwByB,GAEhC,CAES,iBAAAH,GACRjC,KAAKkC,qBAAqBlC,KAAKS,cAChC,CAEO,oBAAAyB,CAAqBqB,GAC3BvD,KAAKS,cAAgB8C,EAErBvD,KAAK+B,WAAWyB,SAAQ,CAACC,EAAeC,KAClC1D,KAAKK,kBAAoBL,KAAKS,eAG5BiD,EAAQ1D,KAAKQ,YAFjBiD,EAASE,MAAMC,QAAU,QAKvBH,EAASE,MAAMC,QAAU,MAE5B,GAEJ,CAEQ,UAAAC,CAAWC,GACdA,EAAaC,IAAI,iBACnB/D,KAAKU,aAAesD,EAAU1E,EAAqBU,KAAKM,aAE3D,CAEkB,OAAA2D,CAAQH,GAEvBA,EAAaC,IAAI,0BACwBG,IAAzCJ,EAAaK,IAAI,qBAEjBnE,KAAKkC,sBAAqB,EAE7B,GArXerC,EAAAuE,OAAS,CAACC,GAI1BC,EAAA,CADCC,EAAS,CAAEC,KAAMC,WACI5E,EAAA6E,UAAA,qBAAA,GAItBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,WACK5E,EAAA6E,UAAA,sBAAA,GAIvBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,WACM5E,EAAA6E,UAAA,uBAAA,GAIxBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,WACO5E,EAAA6E,UAAA,wBAAA,GAIzBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,WACO5E,EAAA6E,UAAA,wBAAA,GAIzBJ,EAAA,CADCC,EAAS,CAAEC,KAAMG,UACgB9E,EAAA6E,UAAA,mBAAA,GAIlCJ,EAAA,CADCC,EAAS,CAAEC,KAAMI,UACE/E,EAAA6E,UAAA,iBAAA,GAMpBJ,EAAA,CADCO,KACehF,EAAA6E,UAAA,mBAAA,GAMhBJ,EAAA,CADCO,KACqBhF,EAAA6E,UAAA,qBAAA,GAMtBJ,EAAA,CADCO,KACkChF,EAAA6E,UAAA,oBAAA,GAMnCJ,EAAA,CADCO,KACiChF,EAAA6E,UAAA,6BAAA,GAOlCJ,EAAA,CADCQ,EAAsB,CAAEC,KAAM,aACdlF,EAAA6E,UAAA,kBAAA,GAKRJ,EAAA,CAARO,KAA+BhF,EAAA6E,UAAA,0BAAA,GAKvBJ,EAAA,CAARO,KAAiChF,EAAA6E,UAAA,4BAAA,GAtEvB7E,EAAiByE,EAAA,CAD7BU,EAAc,4BACFnF"}
|
|
1
|
+
{"version":3,"file":"aiSourcesFeedback.js","sources":["../../../../src/components/ai/sourcesFeedback/aiSourcesFeedback.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport {\n customElement,\n property,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { deepmerge } from 'deepmerge-ts';\nimport { classMap } from 'lit-html/directives/class-map.js';\n\nimport stylesheet from './aiSourcesFeedback.scss';\n\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport chevronIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-down.svg';\nimport thumbsUpIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/thumbs-up.svg';\nimport thumbsDownIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/thumbs-down.svg';\nimport thumbsUpFilledIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/thumbs-up-filled.svg';\nimport thumbsDownFilledIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/thumbs-down-filled.svg';\nimport closeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\nimport '../../reusable/link';\nimport '../../reusable/card';\nimport '../../reusable/button';\n\nconst _defaultTextStrings = {\n sourcesText: 'Sources',\n foundSources: 'Found sources',\n showMore: 'Show more',\n showLess: 'Show less',\n positiveFeedback: 'Share what you liked',\n negativeFeedback: 'Help us improve',\n};\n\n/**\n * AISourcesFeedback Component.\n *\n * @slot copy - copy button\n * @slot sources - source cards in source panel.\n * @slot feedback-form - Positive feedback form.\n * @fires on-toggle - Emits the `opened` state when the panel item opens/closes.\n * @fires on-feedback-deselected - Emits when thumbs-up or thumbs-down button is deselected.\n */\n\n@customElement('kyn-ai-sources-feedback')\nexport class AISourcesFeedback extends LitElement {\n static override styles = [stylesheet];\n\n /** expandable anchor opened state for Sources used. */\n @property({ type: Boolean })\n sourcesOpened = false;\n\n /** expandable anchor opened state for Feedback buttons. */\n @property({ type: Boolean })\n feedbackOpened = false;\n\n /** expandable anchor disabled state for Sources used.. */\n @property({ type: Boolean })\n sourcesDisabled = false;\n\n /** expandable anchor disabled state for Feedback buttons. */\n @property({ type: Boolean })\n feedbackDisabled = false;\n\n /** Limits visible sources behind a \"Show more\" button. */\n @property({ type: Boolean })\n revealAllSources = false;\n\n /** Text string customization. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Close button text. */\n @property({ type: String })\n closeText = 'Close';\n\n /** Number of sources visible when limited.\n * @internal\n */\n @state()\n _limitCount = 4;\n\n /** Sources limit visibility.\n * @internal\n */\n @state()\n limitRevealed = false;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n /** Selecting Positive or Negative Feedback\n * @internal\n */\n @state()\n _selectedFeedbackType: any = null;\n\n /**\n * Queries slotted sources.\n * @ignore\n */\n @queryAssignedElements({ slot: 'sources' })\n _sourceEls!: any;\n\n /** Tracks the number of clicks on thumbs up icon\n * @internal\n */\n @state() thumbsUpClickCount = 0;\n\n /** Tracks the number of clicks on thumbs down icon\n * @internal\n */\n @state() thumbsDownClickCount = 0;\n\n override render() {\n const classesSources: any = classMap({\n 'kyn-sources': true,\n opened: this.sourcesOpened,\n disabled: this.sourcesDisabled,\n });\n const classesFeedback1: any = classMap({\n 'kyn-pos-feedback': true,\n disabled:\n this.feedbackDisabled && this._selectedFeedbackType === 'positive',\n });\n const classesFeedback2: any = classMap({\n 'kyn-neg-feedback': true,\n disabled:\n this.feedbackDisabled && this._selectedFeedbackType === 'positive',\n });\n return html`\n <div class=\"action-bar\">\n <div class=\"left-div\">\n <slot name=\"copy\"></slot>\n\n <div class=\"${classesSources}\">\n <kyn-button\n kind=\"ghost\"\n size=\"small\"\n class=\"kyn-sources-title\"\n iconPosition=\"right\"\n aria-controls=\"kyn-sources-body\"\n aria-expanded=${this.sourcesOpened}\n ?disabled=${this.sourcesDisabled}\n @on-click=\"${(e: Event) => this._handleClick(e, 'sources')}\"\n id=\"kyn-sources-title\"\n >\n <span>${this._textStrings.sourcesText}</span>\n <span class=\"expand-icon\" slot=\"icon\"\n >${unsafeSVG(chevronIcon)}</span\n >\n </kyn-button>\n </div>\n </div>\n\n <div class=\"right-div\">\n <div class=\"${classesFeedback1}\">\n <kyn-button\n kind=\"ghost\"\n size=\"small\"\n id=\"kyn-feedback-title-positive\"\n class=\"kyn-feedback-title\"\n aria-controls=\"kyn-feedback-body\"\n aria-expanded=${this.feedbackOpened}\n ?disabled=${this.feedbackDisabled}\n description=${this._textStrings.positiveFeedback}\n @on-click=${(e: Event) =>\n this._handleClick(e, 'feedback', 'positive')}\n >\n <span slot=\"icon\">\n ${unsafeSVG(\n this.thumbsUpClickCount % 2 === 0\n ? thumbsUpIcon\n : thumbsUpFilledIcon\n )}\n </span>\n </kyn-button>\n </div>\n\n <div class=\"${classesFeedback2}\">\n <kyn-button\n kind=\"ghost\"\n size=\"small\"\n id=\"kyn-feedback-title-negative\"\n class=\"kyn-feedback-title\"\n aria-controls=\"kyn-feedback-body\"\n aria-expanded=${this.feedbackOpened}\n ?disabled=${this.feedbackDisabled}\n description=${this._textStrings.negativeFeedback}\n @on-click=\"${(e: Event) =>\n this._handleClick(e, 'feedback', 'negative')}\"\n >\n <span slot=\"icon\"\n >${unsafeSVG(\n this.thumbsDownClickCount % 2 === 0\n ? thumbsDownIcon\n : thumbsDownFilledIcon\n )}\n </span>\n </kyn-button>\n </div>\n </div>\n </div>\n\n <div\n class=\"${classMap({\n opened: this.sourcesOpened,\n 'kyn-sources-body': true,\n })}\"\n id=\"kyn-sources-body\"\n role=\"region\"\n aria-labelledby=\"kyn-sources-title\"\n >\n <div class=\"close-container\">\n <kyn-button\n class=\"close\"\n @on-click=${(e: Event) => this._handleClick(e, 'sources')}\n }}\n kind=\"ghost\"\n size=\"small\"\n description=${this.closeText}\n >\n <span slot=\"icon\">${unsafeSVG(closeIcon)}</span>\n </kyn-button>\n </div>\n\n <div class=\"found-sources\">\n ${this._textStrings.foundSources} (${this._sourceEls.length}) :\n </div>\n <div class=\"card-container\">\n <slot name=\"sources\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n ${!this.revealAllSources && this._sourceEls.length > this._limitCount\n ? html`\n <kyn-button\n class=\"reveal-toggle\"\n kind=\"ghost\"\n size=\"small\"\n @on-click=${() =>\n this._toggleLimitRevealed(!this.limitRevealed)}\n >\n ${this.limitRevealed\n ? html`${this._textStrings.showLess}`\n : html`\n ${this._textStrings.showMore}\n (${this._sourceEls.length - this._limitCount})\n `}\n </kyn-button>\n `\n : null}\n </div>\n\n <div\n class=\"${classMap({\n opened: this.feedbackOpened,\n 'kyn-feedback-body': true,\n })}\"\n id=\"kyn-feedback-body\"\n role=\"region\"\n aria-labelledby=\"kyn-feedback-title-${this._selectedFeedbackType\n ? 'positive'\n : 'negative'}\"\n >\n <div class=\"close-container\">\n <kyn-button\n class=\"close\"\n description=${this.closeText}\n @on-click=${(e: Event) =>\n this._handleClick(e, 'feedback', this._selectedFeedbackType)}\n }}\n kind=\"ghost\"\n size=\"small\"\n >\n <span slot=\"icon\">${unsafeSVG(closeIcon)}</span>\n </kyn-button>\n </div>\n\n <slot name=\"feedback-form\"></slot>\n </div>\n `;\n }\n private _handleClick(\n e: Event,\n panel: 'sources' | 'feedback',\n feedbackType?: 'positive' | 'negative'\n ) {\n e.preventDefault();\n\n if (\n (panel === 'sources' && this.sourcesDisabled) ||\n (panel === 'feedback' && this.feedbackDisabled)\n ) {\n return;\n }\n\n const target = e.target as HTMLElement;\n const isFeedbackButton = target.id?.includes('kyn-feedback-title');\n\n if (isFeedbackButton && feedbackType) {\n this._updateFeedbackCounts(feedbackType);\n }\n\n if (panel === 'sources' || this._shouldEmitFeedbackEvent(feedbackType)) {\n this._emitToggleEvent(panel, feedbackType);\n }\n }\n\n private _updateFeedbackCounts(feedbackType: 'positive' | 'negative') {\n // Checks if the feedbackType was already selected before updating the counts.\n const wasSelected =\n (feedbackType === 'positive' && this.thumbsUpClickCount % 2 !== 0) ||\n (feedbackType === 'negative' && this.thumbsDownClickCount % 2 !== 0);\n\n if (feedbackType === 'positive') {\n this.thumbsUpClickCount++;\n this.thumbsDownClickCount -= this.thumbsDownClickCount % 2;\n } else {\n this.thumbsDownClickCount++;\n this.thumbsUpClickCount -= this.thumbsUpClickCount % 2;\n }\n\n if (wasSelected) {\n this.dispatchEvent(\n new CustomEvent('on-feedback-deselected', {\n detail: { feedbackType },\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n private _shouldEmitFeedbackEvent(\n feedbackType?: 'positive' | 'negative'\n ): boolean {\n if (!feedbackType) return false;\n const isOddClick = (count: number) => count % 2 !== 0;\n\n return (\n (feedbackType === 'positive' &&\n (isOddClick(this.thumbsUpClickCount) ||\n (this.feedbackOpened && !isOddClick(this.thumbsUpClickCount)))) ||\n (feedbackType === 'negative' &&\n (isOddClick(this.thumbsDownClickCount) ||\n (this.feedbackOpened && !isOddClick(this.thumbsDownClickCount))))\n );\n }\n\n private _emitToggleEvent(\n panel: 'sources' | 'feedback',\n feedbackType?: 'positive' | 'negative'\n ) {\n if (panel === 'sources') {\n this.sourcesOpened = !this.sourcesOpened;\n this.feedbackOpened = false;\n } else if (panel === 'feedback') {\n this.sourcesOpened = false;\n this._toggleFeedbackPanel(feedbackType);\n }\n\n this.dispatchEvent(\n new CustomEvent('on-toggle', {\n detail: {\n sourcesOpened: this.sourcesOpened,\n feedbackOpened: this.feedbackOpened,\n selectedFeedbackType: this._selectedFeedbackType,\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _toggleFeedbackPanel(feedbackType?: 'positive' | 'negative') {\n if (!feedbackType) return;\n\n if (this._selectedFeedbackType === feedbackType && this.feedbackOpened) {\n this.feedbackOpened = false;\n this._selectedFeedbackType = null;\n } else {\n this.feedbackOpened = true;\n this._selectedFeedbackType = feedbackType;\n }\n }\n\n protected _handleSlotChange() {\n this._toggleLimitRevealed(this.limitRevealed);\n }\n\n private _toggleLimitRevealed(revealed: boolean) {\n this.limitRevealed = revealed;\n\n this._sourceEls.forEach((sourceEl: any, index: any) => {\n if (this.revealAllSources || this.limitRevealed) {\n sourceEl.style.display = 'block';\n } else {\n if (index < this._limitCount) {\n sourceEl.style.display = 'block';\n } else {\n sourceEl.style.display = 'none';\n }\n }\n });\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n protected override updated(changedProps: any): void {\n if (\n changedProps.has('revealAllSources') &&\n changedProps.get('revealAllSources') !== undefined\n ) {\n this._toggleLimitRevealed(false);\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-ai-sources-feedback': AISourcesFeedback;\n }\n}\n"],"names":["_defaultTextStrings","sourcesText","foundSources","showMore","showLess","positiveFeedback","negativeFeedback","AISourcesFeedback","LitElement","constructor","this","sourcesOpened","feedbackOpened","sourcesDisabled","feedbackDisabled","revealAllSources","textStrings","closeText","_limitCount","limitRevealed","_textStrings","_selectedFeedbackType","thumbsUpClickCount","thumbsDownClickCount","render","classesSources","classMap","opened","disabled","classesFeedback1","classesFeedback2","html","e","_handleClick","unsafeSVG","chevronIcon","thumbsUpIcon","thumbsUpFilledIcon","thumbsDownIcon","thumbsDownFilledIcon","closeIcon","_sourceEls","length","_handleSlotChange","_toggleLimitRevealed","panel","feedbackType","preventDefault","_a","target","id","includes","_updateFeedbackCounts","_shouldEmitFeedbackEvent","_emitToggleEvent","wasSelected","dispatchEvent","CustomEvent","detail","bubbles","composed","isOddClick","count","_toggleFeedbackPanel","selectedFeedbackType","revealed","forEach","sourceEl","index","style","display","willUpdate","changedProps","has","deepmerge","updated","undefined","get","styles","stylesheet","__decorate","property","type","Boolean","prototype","Object","String","state","queryAssignedElements","slot","customElement"],"mappings":"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"}
|
|
@@ -27,6 +27,8 @@ export declare class Pagination extends LitElement {
|
|
|
27
27
|
_numberOfPages: number;
|
|
28
28
|
/** Label for the page size dropdown. Required for accessibility. */
|
|
29
29
|
pageSizeDropdownLabel: string;
|
|
30
|
+
/** Label for the page size dropdown. Required for accessibility. */
|
|
31
|
+
pageNumberLabel: string;
|
|
30
32
|
/** Option to hide the items range display. */
|
|
31
33
|
hideItemsRange: boolean;
|
|
32
34
|
/** Option to hide the page size dropdown. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/pagination/Pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAMvC,OAAO,0BAA0B,CAAC;AAClC,OAAO,iCAAiC,CAAC;AACzC,OAAO,iCAAiC,CAAC;AAEzC;;;;;;;;;;GAUG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,QAAY;IAElC,kDAAkD;IAElD,KAAK,SAAK;IAEV,kCAAkC;IAElC,UAAU,SAAK;IAEf,0CAA0C;IAE1C,QAAQ,SAAK;IAEb,2CAA2C;IAE3C,eAAe,EAAE,MAAM,EAAE,CAAgC;IAEzD,uBAAuB;IAEvB,cAAc,SAAK;IAEnB,oEAAoE;IAEpE,qBAAqB,SAAmB;IAExC,8CAA8C;IAE9C,cAAc,UAAS;IAEvB,6CAA6C;IAE7C,oBAAoB,UAAS;IAE7B,6CAA6C;IAE7C,qBAAqB,UAAS;IAE9B,gCAAgC;IAEhC,WAAW;;;;;;;;MAQT;IAEF;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAIrB,MAAM;
|
|
1
|
+
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/pagination/Pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAMvC,OAAO,0BAA0B,CAAC;AAClC,OAAO,iCAAiC,CAAC;AACzC,OAAO,iCAAiC,CAAC;AAEzC;;;;;;;;;;GAUG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,QAAY;IAElC,kDAAkD;IAElD,KAAK,SAAK;IAEV,kCAAkC;IAElC,UAAU,SAAK;IAEf,0CAA0C;IAE1C,QAAQ,SAAK;IAEb,2CAA2C;IAE3C,eAAe,EAAE,MAAM,EAAE,CAAgC;IAEzD,uBAAuB;IAEvB,cAAc,SAAK;IAEnB,oEAAoE;IAEpE,qBAAqB,SAAmB;IAExC,oEAAoE;IAEpE,eAAe,SAAqB;IAEpC,8CAA8C;IAE9C,cAAc,UAAS;IAEvB,6CAA6C;IAE7C,oBAAoB,UAAS;IAE7B,6CAA6C;IAE7C,qBAAqB,UAAS;IAE9B,gCAAgC;IAEhC,WAAW;;;;;;;;MAQT;IAEF;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAIrB,MAAM;IAqCN,OAAO,CAAC,YAAY,EAAE,GAAG;CAQnC;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,UAAU,CAAC;KAC9B;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{_ as e}from"../../../vendor/tslib-53a81efe.js";import{n as t,t as i,e as o}from"../../../vendor/lit-461e78e6.js";import{s as
|
|
2
|
-
${this.hideItemsRange?null:
|
|
1
|
+
import{_ as e}from"../../../vendor/tslib-53a81efe.js";import{n as t,t as i,e as o}from"../../../vendor/lit-461e78e6.js";import{s as p,x as n}from"../../../vendor/lit-element-c6c02f24.js";import{c as a}from"../../../pagination-3f7d00d6.js";import"./pagination-items-range.js";import"./pagination-page-size-dropdown.js";import"./pagination-navigation-buttons.js";import"../dropdown/dropdown.js";import"../../../vendor/lit-html-29220869.js";import"../../../common/mixins/form-input.js";import"../../../vendor/deepmerge-ts-e62363e6.js";import"../dropdown/dropdownOption.js";import"../checkbox/checkbox.js";import"../checkbox/checkboxGroup.js";import"../textInput/textInput.js";import"../button/button.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";import"../../../vendor/@kyndryl-design-system/shidoka-icons-ab960376.js";import"../checkbox/checkboxSubgroup.js";import"../tag/tag.js";import"../../../tag-f3175688.js";import"../tag/tagGroup.js";import"../link/link.js";import"../link/defs.js";import"../tag/tag.skeleton.js";import"../loaders/skeleton.js";import"../dropdown/dropdownCategory.js";let s=class extends p{constructor(){super(...arguments),this.count=0,this.pageNumber=1,this.pageSize=5,this.pageSizeOptions=[5,10,20,30,40,50,100],this._numberOfPages=1,this.pageSizeDropdownLabel="Items Per Page:",this.pageNumberLabel="Page Number",this.hideItemsRange=!1,this.hidePageSizeDropdown=!1,this.hideNavigationButtons=!1,this.textStrings={showing:"Showing",of:"of",items:"items",pages:"pages",itemsPerPage:"Items per page:",previousPage:"Previous page",nextPage:"Next page"}}handlePageSizeChange(e){this.pageSize=e.detail.value,this.pageNumber=1}handlePageNumberChange(e){this.pageNumber=e.detail.value}render(){return n`
|
|
2
|
+
${this.hideItemsRange?null:n`
|
|
3
3
|
<kyn-pagination-items-range
|
|
4
4
|
.pageNumber=${this.pageNumber}
|
|
5
5
|
.pageSize=${this.pageSize}
|
|
@@ -7,7 +7,7 @@ import{_ as e}from"../../../vendor/tslib-53a81efe.js";import{n as t,t as i,e as
|
|
|
7
7
|
.textStrings=${this.textStrings}
|
|
8
8
|
></kyn-pagination-items-range>
|
|
9
9
|
`}
|
|
10
|
-
${this.hidePageSizeDropdown?null:
|
|
10
|
+
${this.hidePageSizeDropdown?null:n`
|
|
11
11
|
<kyn-pagination-page-size-dropdown
|
|
12
12
|
.pageSize=${this.pageSize}
|
|
13
13
|
.pageSizeOptions=${this.pageSizeOptions}
|
|
@@ -16,13 +16,14 @@ import{_ as e}from"../../../vendor/tslib-53a81efe.js";import{n as t,t as i,e as
|
|
|
16
16
|
@on-page-size-change=${this.handlePageSizeChange}
|
|
17
17
|
></kyn-pagination-page-size-dropdown>
|
|
18
18
|
`}
|
|
19
|
-
${this.hideNavigationButtons?null:
|
|
19
|
+
${this.hideNavigationButtons?null:n`
|
|
20
20
|
<kyn-pagination-navigation-buttons
|
|
21
21
|
.pageNumber=${this.pageNumber}
|
|
22
22
|
.numberOfPages=${this._numberOfPages}
|
|
23
|
+
.pageNumberLabel=${this.pageNumberLabel}
|
|
23
24
|
.textStrings=${this.textStrings}
|
|
24
25
|
@on-page-number-change=${this.handlePageNumberChange}
|
|
25
26
|
></kyn-pagination-navigation-buttons>
|
|
26
27
|
`}
|
|
27
|
-
`}updated(e){(e.has("count")||e.has("pageSize"))&&this.pageSize&&this.count&&(this._numberOfPages=Math.ceil(this.count/this.pageSize))}};s.styles=[a],e([t({type:Number,reflect:!0})],s.prototype,"count",void 0),e([t({type:Number,reflect:!0})],s.prototype,"pageNumber",void 0),e([t({type:Number,reflect:!0})],s.prototype,"pageSize",void 0),e([t({type:Array})],s.prototype,"pageSizeOptions",void 0),e([i()],s.prototype,"_numberOfPages",void 0),e([t({type:String})],s.prototype,"pageSizeDropdownLabel",void 0),e([t({type:Boolean})],s.prototype,"hideItemsRange",void 0),e([t({type:Boolean})],s.prototype,"hidePageSizeDropdown",void 0),e([t({type:Boolean})],s.prototype,"hideNavigationButtons",void 0),e([t({type:Object})],s.prototype,"textStrings",void 0),s=e([o("kyn-pagination")],s);export{s as Pagination};
|
|
28
|
+
`}updated(e){(e.has("count")||e.has("pageSize"))&&this.pageSize&&this.count&&(this._numberOfPages=Math.ceil(this.count/this.pageSize),this.pageNumber=1)}};s.styles=[a],e([t({type:Number,reflect:!0})],s.prototype,"count",void 0),e([t({type:Number,reflect:!0})],s.prototype,"pageNumber",void 0),e([t({type:Number,reflect:!0})],s.prototype,"pageSize",void 0),e([t({type:Array})],s.prototype,"pageSizeOptions",void 0),e([i()],s.prototype,"_numberOfPages",void 0),e([t({type:String})],s.prototype,"pageSizeDropdownLabel",void 0),e([t({type:String})],s.prototype,"pageNumberLabel",void 0),e([t({type:Boolean})],s.prototype,"hideItemsRange",void 0),e([t({type:Boolean})],s.prototype,"hidePageSizeDropdown",void 0),e([t({type:Boolean})],s.prototype,"hideNavigationButtons",void 0),e([t({type:Object})],s.prototype,"textStrings",void 0),s=e([o("kyn-pagination")],s);export{s as Pagination};
|
|
28
29
|
//# sourceMappingURL=Pagination.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/reusable/pagination/Pagination.ts","../../../../src/components/reusable/pagination/constants.sample.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { PAGE_SIZE_LABEL } from './constants.sample';\nimport styles from './pagination.scss';\n\nimport './pagination-items-range';\nimport './pagination-page-size-dropdown';\nimport './pagination-navigation-buttons';\n\n/**\n * `kyn-pagination` Web Component.\n *\n * A component that provides pagination functionality, enabling the user to\n * navigate through large datasets by splitting them into discrete chunks.\n * Integrates with other utility components like items range display, page size dropdown,\n * and navigation buttons.\n * @fires on-page-size-change - Dispatched when the page size changes.\n * @fires on-page-number-change - Dispatched when the currently active page changes.\n *\n */\n@customElement('kyn-pagination')\nexport class Pagination extends LitElement {\n static override styles = [styles];\n\n /** Total number of items that need pagination. */\n @property({ type: Number, reflect: true })\n count = 0;\n\n /** Current active page number. */\n @property({ type: Number, reflect: true })\n pageNumber = 1;\n\n /** Number of items displayed per page. */\n @property({ type: Number, reflect: true })\n pageSize = 5;\n\n /** Available options for the page size. */\n @property({ type: Array })\n pageSizeOptions: number[] = [5, 10, 20, 30, 40, 50, 100];\n\n /** Number of pages. */\n @state()\n _numberOfPages = 1;\n\n /** Label for the page size dropdown. Required for accessibility. */\n @property({ type: String })\n pageSizeDropdownLabel = PAGE_SIZE_LABEL;\n\n /** Option to hide the items range display. */\n @property({ type: Boolean })\n hideItemsRange = false;\n\n /** Option to hide the page size dropdown. */\n @property({ type: Boolean })\n hidePageSizeDropdown = false;\n\n /** Option to hide the navigation buttons. */\n @property({ type: Boolean })\n hideNavigationButtons = false;\n\n /** Customizable text strings */\n @property({ type: Object })\n textStrings = {\n showing: 'Showing',\n of: 'of',\n items: 'items',\n pages: 'pages',\n itemsPerPage: 'Items per page:',\n previousPage: 'Previous page',\n nextPage: 'Next page',\n };\n\n /**\n * Handler for the event when the page size is changed by the user.\n * Updates the `pageSize` and resets the `pageNumber` to 1.\n *\n * @param e - The emitted custom event with the selected page size.\n */\n private handlePageSizeChange(e: CustomEvent) {\n this.pageSize = e.detail.value;\n this.pageNumber = 1;\n }\n\n /**\n * Handler for the event when the page number is changed by the user.\n * Updates the `pageNumber`.\n *\n * @param e - The emitted custom event with the selected page number.\n */\n private handlePageNumberChange(e: CustomEvent) {\n this.pageNumber = e.detail.value;\n }\n\n override render() {\n return html`\n ${!this.hideItemsRange\n ? html`\n <kyn-pagination-items-range\n .pageNumber=${this.pageNumber}\n .pageSize=${this.pageSize}\n .count=${this.count}\n .textStrings=${this.textStrings}\n ></kyn-pagination-items-range>\n `\n : null}\n ${!this.hidePageSizeDropdown\n ? html`\n <kyn-pagination-page-size-dropdown\n .pageSize=${this.pageSize}\n .pageSizeOptions=${this.pageSizeOptions}\n .pageSizeDropdownLabel=${this.pageSizeDropdownLabel}\n .textStrings=${this.textStrings}\n @on-page-size-change=${this.handlePageSizeChange}\n ></kyn-pagination-page-size-dropdown>\n `\n : null}\n ${!this.hideNavigationButtons\n ? html`\n <kyn-pagination-navigation-buttons\n .pageNumber=${this.pageNumber}\n .numberOfPages=${this._numberOfPages}\n .textStrings=${this.textStrings}\n @on-page-number-change=${this.handlePageNumberChange}\n ></kyn-pagination-navigation-buttons>\n `\n : null}\n `;\n }\n\n override updated(changedProps: any) {\n if (changedProps.has('count') || changedProps.has('pageSize')) {\n if (this.pageSize && this.count) {\n this._numberOfPages = Math.ceil(this.count / this.pageSize);\n }\n }\n }\n}\n\n// Define the custom element in the global namespace\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-pagination': Pagination;\n }\n}\n","export const SHOWING_TEXT = 'Showing'
|
|
1
|
+
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/reusable/pagination/Pagination.ts","../../../../src/components/reusable/pagination/constants.sample.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { PAGE_SIZE_LABEL, PAGE_NUMBER_LABEL } from './constants.sample';\nimport styles from './pagination.scss';\n\nimport './pagination-items-range';\nimport './pagination-page-size-dropdown';\nimport './pagination-navigation-buttons';\n\n/**\n * `kyn-pagination` Web Component.\n *\n * A component that provides pagination functionality, enabling the user to\n * navigate through large datasets by splitting them into discrete chunks.\n * Integrates with other utility components like items range display, page size dropdown,\n * and navigation buttons.\n * @fires on-page-size-change - Dispatched when the page size changes.\n * @fires on-page-number-change - Dispatched when the currently active page changes.\n *\n */\n@customElement('kyn-pagination')\nexport class Pagination extends LitElement {\n static override styles = [styles];\n\n /** Total number of items that need pagination. */\n @property({ type: Number, reflect: true })\n count = 0;\n\n /** Current active page number. */\n @property({ type: Number, reflect: true })\n pageNumber = 1;\n\n /** Number of items displayed per page. */\n @property({ type: Number, reflect: true })\n pageSize = 5;\n\n /** Available options for the page size. */\n @property({ type: Array })\n pageSizeOptions: number[] = [5, 10, 20, 30, 40, 50, 100];\n\n /** Number of pages. */\n @state()\n _numberOfPages = 1;\n\n /** Label for the page size dropdown. Required for accessibility. */\n @property({ type: String })\n pageSizeDropdownLabel = PAGE_SIZE_LABEL;\n\n /** Label for the page size dropdown. Required for accessibility. */\n @property({ type: String })\n pageNumberLabel = PAGE_NUMBER_LABEL;\n\n /** Option to hide the items range display. */\n @property({ type: Boolean })\n hideItemsRange = false;\n\n /** Option to hide the page size dropdown. */\n @property({ type: Boolean })\n hidePageSizeDropdown = false;\n\n /** Option to hide the navigation buttons. */\n @property({ type: Boolean })\n hideNavigationButtons = false;\n\n /** Customizable text strings */\n @property({ type: Object })\n textStrings = {\n showing: 'Showing',\n of: 'of',\n items: 'items',\n pages: 'pages',\n itemsPerPage: 'Items per page:',\n previousPage: 'Previous page',\n nextPage: 'Next page',\n };\n\n /**\n * Handler for the event when the page size is changed by the user.\n * Updates the `pageSize` and resets the `pageNumber` to 1.\n *\n * @param e - The emitted custom event with the selected page size.\n */\n private handlePageSizeChange(e: CustomEvent) {\n this.pageSize = e.detail.value;\n this.pageNumber = 1;\n }\n\n /**\n * Handler for the event when the page number is changed by the user.\n * Updates the `pageNumber`.\n *\n * @param e - The emitted custom event with the selected page number.\n */\n private handlePageNumberChange(e: CustomEvent) {\n this.pageNumber = e.detail.value;\n }\n\n override render() {\n return html`\n ${!this.hideItemsRange\n ? html`\n <kyn-pagination-items-range\n .pageNumber=${this.pageNumber}\n .pageSize=${this.pageSize}\n .count=${this.count}\n .textStrings=${this.textStrings}\n ></kyn-pagination-items-range>\n `\n : null}\n ${!this.hidePageSizeDropdown\n ? html`\n <kyn-pagination-page-size-dropdown\n .pageSize=${this.pageSize}\n .pageSizeOptions=${this.pageSizeOptions}\n .pageSizeDropdownLabel=${this.pageSizeDropdownLabel}\n .textStrings=${this.textStrings}\n @on-page-size-change=${this.handlePageSizeChange}\n ></kyn-pagination-page-size-dropdown>\n `\n : null}\n ${!this.hideNavigationButtons\n ? html`\n <kyn-pagination-navigation-buttons\n .pageNumber=${this.pageNumber}\n .numberOfPages=${this._numberOfPages}\n .pageNumberLabel=${this.pageNumberLabel}\n .textStrings=${this.textStrings}\n @on-page-number-change=${this.handlePageNumberChange}\n ></kyn-pagination-navigation-buttons>\n `\n : null}\n `;\n }\n\n override updated(changedProps: any) {\n if (changedProps.has('count') || changedProps.has('pageSize')) {\n if (this.pageSize && this.count) {\n this._numberOfPages = Math.ceil(this.count / this.pageSize);\n this.pageNumber = 1;\n }\n }\n }\n}\n\n// Define the custom element in the global namespace\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-pagination': Pagination;\n }\n}\n","export const SHOWING_TEXT = 'Showing';\nexport const OF_TEXT = 'of';\nexport const ITEMS_TEXT = 'items';\nexport const PAGES_TEXT = 'pages';\nexport const PAGE_SIZE_LABEL = 'Items Per Page:';\nexport const PAGE_NUMBER_LABEL = 'Page Number';\nexport const BREAKPOINT = 768;\n"],"names":["Pagination","LitElement","constructor","this","count","pageNumber","pageSize","pageSizeOptions","_numberOfPages","pageSizeDropdownLabel","pageNumberLabel","hideItemsRange","hidePageSizeDropdown","hideNavigationButtons","textStrings","showing","of","items","pages","itemsPerPage","previousPage","nextPage","handlePageSizeChange","e","detail","value","handlePageNumberChange","render","html","updated","changedProps","has","Math","ceil","styles","__decorate","property","type","Number","reflect","prototype","Array","state","String","Boolean","Object","customElement"],"mappings":"2lCAsBO,IAAMA,EAAN,cAAyBC,EAAzB,WAAAC,uBAKLC,KAAKC,MAAG,EAIRD,KAAUE,WAAG,EAIbF,KAAQG,SAAG,EAIXH,KAAAI,gBAA4B,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,KAIpDJ,KAAcK,eAAG,EAIjBL,KAAqBM,sBC3CQ,kBD+C7BN,KAAeO,gBC9CgB,cDkD/BP,KAAcQ,gBAAG,EAIjBR,KAAoBS,sBAAG,EAIvBT,KAAqBU,uBAAG,EAIxBV,KAAAW,YAAc,CACZC,QAAS,UACTC,GAAI,KACJC,MAAO,QACPC,MAAO,QACPC,aAAc,kBACdC,aAAc,gBACdC,SAAU,YAqEb,CA5DS,oBAAAC,CAAqBC,GAC3BpB,KAAKG,SAAWiB,EAAEC,OAAOC,MACzBtB,KAAKE,WAAa,CACnB,CAQO,sBAAAqB,CAAuBH,GAC7BpB,KAAKE,WAAakB,EAAEC,OAAOC,KAC5B,CAEQ,MAAAE,GACP,OAAOC,CAAI;QACNzB,KAAKQ,eASJ,KARAiB,CAAI;;4BAEczB,KAAKE;0BACPF,KAAKG;uBACRH,KAAKC;6BACCD,KAAKW;;;QAIzBX,KAAKS,qBAUJ,KATAgB,CAAI;;0BAEYzB,KAAKG;iCACEH,KAAKI;uCACCJ,KAAKM;6BACfN,KAAKW;qCACGX,KAAKmB;;;QAIjCnB,KAAKU,sBAUJ,KATAe,CAAI;;4BAEczB,KAAKE;+BACFF,KAAKK;iCACHL,KAAKO;6BACTP,KAAKW;uCACKX,KAAKuB;;;KAKzC,CAEQ,OAAAG,CAAQC,IACXA,EAAaC,IAAI,UAAYD,EAAaC,IAAI,cAC5C5B,KAAKG,UAAYH,KAAKC,QACxBD,KAAKK,eAAiBwB,KAAKC,KAAK9B,KAAKC,MAAQD,KAAKG,UAClDH,KAAKE,WAAa,EAGvB,GAvHeL,EAAAkC,OAAS,CAACA,GAI1BC,EAAA,CADCC,EAAS,CAAEC,KAAMC,OAAQC,SAAS,KACzBvC,EAAAwC,UAAA,aAAA,GAIVL,EAAA,CADCC,EAAS,CAAEC,KAAMC,OAAQC,SAAS,KACpBvC,EAAAwC,UAAA,kBAAA,GAIfL,EAAA,CADCC,EAAS,CAAEC,KAAMC,OAAQC,SAAS,KACtBvC,EAAAwC,UAAA,gBAAA,GAIbL,EAAA,CADCC,EAAS,CAAEC,KAAMI,SACuCzC,EAAAwC,UAAA,uBAAA,GAIzDL,EAAA,CADCO,KACkB1C,EAAAwC,UAAA,sBAAA,GAInBL,EAAA,CADCC,EAAS,CAAEC,KAAMM,UACsB3C,EAAAwC,UAAA,6BAAA,GAIxCL,EAAA,CADCC,EAAS,CAAEC,KAAMM,UACkB3C,EAAAwC,UAAA,uBAAA,GAIpCL,EAAA,CADCC,EAAS,CAAEC,KAAMO,WACK5C,EAAAwC,UAAA,sBAAA,GAIvBL,EAAA,CADCC,EAAS,CAAEC,KAAMO,WACW5C,EAAAwC,UAAA,4BAAA,GAI7BL,EAAA,CADCC,EAAS,CAAEC,KAAMO,WACY5C,EAAAwC,UAAA,6BAAA,GAI9BL,EAAA,CADCC,EAAS,CAAEC,KAAMQ,UAShB7C,EAAAwC,UAAA,mBAAA,GArDSxC,EAAUmC,EAAA,CADtBW,EAAc,mBACF9C"}
|
|
@@ -3,5 +3,6 @@ export declare const OF_TEXT = "of";
|
|
|
3
3
|
export declare const ITEMS_TEXT = "items";
|
|
4
4
|
export declare const PAGES_TEXT = "pages";
|
|
5
5
|
export declare const PAGE_SIZE_LABEL = "Items Per Page:";
|
|
6
|
+
export declare const PAGE_NUMBER_LABEL = "Page Number";
|
|
6
7
|
export declare const BREAKPOINT = 768;
|
|
7
8
|
//# sourceMappingURL=constants.sample.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.sample.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/pagination/constants.sample.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,YAAY,
|
|
1
|
+
{"version":3,"file":"constants.sample.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/pagination/constants.sample.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,YAAY,CAAC;AACtC,eAAO,MAAM,OAAO,OAAO,CAAC;AAC5B,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAC/C,eAAO,MAAM,UAAU,MAAM,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{Pagination}from"./Pagination.js";export{PaginationItemsRange}from"./pagination-items-range.js";export{PaginationPageSizeDropdown}from"./pagination-page-size-dropdown.js";export{PaginationNavigationButtons}from"./pagination-navigation-buttons.js";export{PaginationSkeleton}from"./pagination.skeleton.js";import"../../../vendor/tslib-53a81efe.js";import"../../../vendor/lit-461e78e6.js";import"../../../vendor/lit-element-c6c02f24.js";import"../../../pagination-3f7d00d6.js";import"../dropdown/dropdown.js";import"../../../vendor/lit-html-29220869.js";import"../../../common/mixins/form-input.js";import"../../../vendor/deepmerge-ts-e62363e6.js";import"../dropdown/dropdownOption.js";import"../checkbox/checkbox.js";import"../checkbox/checkboxGroup.js";import"../textInput/textInput.js";import"../button/button.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";import"../../../vendor/@kyndryl-design-system/shidoka-icons-ab960376.js";import"../checkbox/checkboxSubgroup.js";import"../tag/tag.js";import"../../../tag-f3175688.js";import"../tag/tagGroup.js";import"../link/link.js";import"../link/defs.js";import"../tag/tag.skeleton.js";import"../loaders/skeleton.js";
|
|
1
|
+
export{Pagination}from"./Pagination.js";export{PaginationItemsRange}from"./pagination-items-range.js";export{PaginationPageSizeDropdown}from"./pagination-page-size-dropdown.js";export{PaginationNavigationButtons}from"./pagination-navigation-buttons.js";export{PaginationSkeleton}from"./pagination.skeleton.js";import"../../../vendor/tslib-53a81efe.js";import"../../../vendor/lit-461e78e6.js";import"../../../vendor/lit-element-c6c02f24.js";import"../../../pagination-3f7d00d6.js";import"../dropdown/dropdown.js";import"../../../vendor/lit-html-29220869.js";import"../../../common/mixins/form-input.js";import"../../../vendor/deepmerge-ts-e62363e6.js";import"../dropdown/dropdownOption.js";import"../checkbox/checkbox.js";import"../checkbox/checkboxGroup.js";import"../textInput/textInput.js";import"../button/button.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";import"../../../vendor/@kyndryl-design-system/shidoka-icons-ab960376.js";import"../checkbox/checkboxSubgroup.js";import"../tag/tag.js";import"../../../tag-f3175688.js";import"../tag/tagGroup.js";import"../link/link.js";import"../link/defs.js";import"../tag/tag.skeleton.js";import"../loaders/skeleton.js";import"../dropdown/dropdownCategory.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
2
|
import '../button';
|
|
3
|
+
import '../dropdown';
|
|
3
4
|
/**
|
|
4
5
|
* `kyn-pagination-navigation-buttons` Web Component.
|
|
5
6
|
*
|
|
@@ -16,13 +17,25 @@ export declare class PaginationNavigationButtons extends LitElement {
|
|
|
16
17
|
* @internal
|
|
17
18
|
*/
|
|
18
19
|
textStrings: any;
|
|
20
|
+
/** Available options for the page number. */
|
|
21
|
+
pageNumberOptions: Array<number>;
|
|
19
22
|
private readonly SMALLEST_PAGE_NUMBER;
|
|
23
|
+
/** Label for the page size dropdown. Required for accessibility.
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
pageNumberLabel: string;
|
|
20
27
|
/**
|
|
21
28
|
* Handles the button click event, either moving to the next page or previous page
|
|
22
29
|
* @param {boolean} next - If true, will move to the next page, otherwise to the previous page
|
|
23
30
|
*/
|
|
24
31
|
private handleButtonClick;
|
|
32
|
+
/**
|
|
33
|
+
* Handles the dropdown change event.
|
|
34
|
+
* @param {CustomEvent} event
|
|
35
|
+
*/
|
|
36
|
+
private handleChange;
|
|
25
37
|
render(): import("lit").TemplateResult<1>;
|
|
38
|
+
willUpdate(changedProps: any): void;
|
|
26
39
|
}
|
|
27
40
|
declare global {
|
|
28
41
|
interface HTMLElementTagNameMap {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination-navigation-buttons.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/pagination/pagination-navigation-buttons.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAIvC,OAAO,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"pagination-navigation-buttons.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/pagination/pagination-navigation-buttons.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAIvC,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AAOrB;;;;;;;GAOG;AACH,qBACa,2BAA4B,SAAQ,UAAU;IACzD,OAAgB,MAAM,QAAY;IAIlC,UAAU,SAAK;IAIf,aAAa,SAAK;IAElB;;OAEG;IAEH,WAAW,EAAE,GAAG,CAAM;IAEtB,6CAA6C;IAE7C,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM;IAGtC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAK;IAE1C;;OAEG;IAEH,eAAe,SAAiB;IAEhC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAYX,MAAM;IAqDN,UAAU,CAAC,YAAY,EAAE,GAAG;CAQtC;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mCAAmC,EAAE,2BAA2B,CAAC;KAClE;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as
|
|
1
|
+
import{_ as e}from"../../../vendor/tslib-53a81efe.js";import{o as t}from"../../../vendor/lit-html-29220869.js";import{n as i,t as o,e as n}from"../../../vendor/lit-461e78e6.js";import{i as r,s,x as a}from"../../../vendor/lit-element-c6c02f24.js";import"../button/button.js";import"../dropdown/dropdown.js";import"../dropdown/dropdownOption.js";import"../dropdown/dropdownCategory.js";import{j as p,b as d}from"../../../vendor/@kyndryl-design-system/shidoka-icons-ab960376.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";import"../../../common/mixins/form-input.js";import"../../../vendor/deepmerge-ts-e62363e6.js";import"../tag/tag.js";import"../../../tag-f3175688.js";import"../tag/tagGroup.js";import"../link/link.js";import"../link/defs.js";import"../tag/tag.skeleton.js";import"../loaders/skeleton.js";import"../checkbox/checkbox.js";import"../checkbox/checkboxGroup.js";import"../textInput/textInput.js";import"../checkbox/checkboxSubgroup.js";var m=r`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -84,22 +84,36 @@ import{_ as t}from"../../../vendor/tslib-53a81efe.js";import{o as e}from"../../.
|
|
|
84
84
|
|
|
85
85
|
span[slot=icon] {
|
|
86
86
|
display: flex;
|
|
87
|
-
}`;let h=class extends
|
|
87
|
+
}`;let h=class extends s{constructor(){super(...arguments),this.pageNumber=1,this.numberOfPages=1,this.textStrings={},this.pageNumberOptions=[],this.SMALLEST_PAGE_NUMBER=1,this.pageNumberLabel="Page number"}handleButtonClick(e){const t=e?this.pageNumber+1:this.pageNumber-1;this.pageNumber=t,this.dispatchEvent(new CustomEvent("on-page-number-change",{detail:{value:t},bubbles:!0,composed:!0}))}handleChange(e){this.pageNumber=e.detail.value,this.dispatchEvent(new CustomEvent("on-page-number-change",{detail:{value:Number(e.detail.value)},bubbles:!0,composed:!0}))}render(){const e=this.pageNumber<=this.SMALLEST_PAGE_NUMBER,i=this.pageNumber>=this.numberOfPages;return a`
|
|
88
88
|
<kyn-button
|
|
89
89
|
iconposition="center"
|
|
90
90
|
kind="ghost"
|
|
91
91
|
type="button"
|
|
92
92
|
size="small"
|
|
93
|
-
?disabled=${
|
|
93
|
+
?disabled=${e}
|
|
94
94
|
@on-click=${()=>this.handleButtonClick(!1)}
|
|
95
95
|
description=${this.textStrings.previousPage}
|
|
96
96
|
>
|
|
97
|
-
<span slot="icon">${
|
|
97
|
+
<span slot="icon">${t(p)}</span>
|
|
98
98
|
</kyn-button>
|
|
99
99
|
|
|
100
100
|
<span class="page-range" role="status" aria-live="polite">
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
<kyn-dropdown
|
|
102
|
+
name="page-number"
|
|
103
|
+
label="${this.pageNumberLabel}"
|
|
104
|
+
?hideLabel=${!0}
|
|
105
|
+
inline
|
|
106
|
+
size="sm"
|
|
107
|
+
value="${this.pageNumber.toString()}"
|
|
108
|
+
@on-change=${e=>this.handleChange(e)}
|
|
109
|
+
>
|
|
110
|
+
${this.pageNumberOptions.map((e=>a`
|
|
111
|
+
<kyn-dropdown-option value="${e.toString()}">
|
|
112
|
+
${e.toString()}
|
|
113
|
+
</kyn-dropdown-option>
|
|
114
|
+
`))}
|
|
115
|
+
</kyn-dropdown>
|
|
116
|
+
${this.textStrings.of} ${this.numberOfPages} ${this.textStrings.pages}
|
|
103
117
|
</span>
|
|
104
118
|
|
|
105
119
|
<kyn-button
|
|
@@ -111,7 +125,7 @@ span[slot=icon] {
|
|
|
111
125
|
@on-click=${()=>this.handleButtonClick(!0)}
|
|
112
126
|
description=${this.textStrings.nextPage}
|
|
113
127
|
>
|
|
114
|
-
<span slot="icon">${
|
|
128
|
+
<span slot="icon">${t(d)}</span>
|
|
115
129
|
</kyn-button>
|
|
116
|
-
`}};h.styles=[m],
|
|
130
|
+
`}willUpdate(e){e.has("numberOfPages")&&(this.pageNumberOptions=Array.from({length:this.numberOfPages},((e,t)=>t+1)))}};h.styles=[m],e([i({type:Number,reflect:!0})],h.prototype,"pageNumber",void 0),e([i({type:Number,reflect:!0})],h.prototype,"numberOfPages",void 0),e([i({type:Object})],h.prototype,"textStrings",void 0),e([o()],h.prototype,"pageNumberOptions",void 0),e([i({type:String})],h.prototype,"pageNumberLabel",void 0),h=e([n("kyn-pagination-navigation-buttons")],h);export{h as PaginationNavigationButtons};
|
|
117
131
|
//# sourceMappingURL=pagination-navigation-buttons.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination-navigation-buttons.js","sources":["../../../../src/components/reusable/pagination/pagination-navigation-buttons.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { html, LitElement } from 'lit';\nimport { property, customElement } from 'lit/decorators.js';\n\n// Import required components and icons\nimport '../button';\nimport chevLeftIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-left.svg';\nimport chevRightIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-right.svg';\n\nimport styles from './pagination-navigation-buttons.scss';\n// import { OF_TEXT, PAGES_TEXT } from './constants';\n\n/**\n * `kyn-pagination-navigation-buttons` Web Component.\n *\n * This component provides navigational controls for pagination.\n * It includes back and next buttons, along with displaying the current page and total pages.\n *\n * @fires on-page-number-change - Dispatched when the page number is changed.\n */\n@customElement('kyn-pagination-navigation-buttons')\nexport class PaginationNavigationButtons extends LitElement {\n static override styles = [styles];\n\n // Current page number, defaults to 0\n @property({ type: Number, reflect: true })\n pageNumber = 1;\n\n // Total number of pages, defaults to 0\n @property({ type: Number, reflect: true })\n numberOfPages = 1;\n\n /** Customizable text strings. Inherited from parent\n * @internal\n */\n @property({ type: Object })\n textStrings: any = {};\n\n // Constant representing the smallest possible page number\n private readonly SMALLEST_PAGE_NUMBER = 1;\n\n /**\n * Handles the button click event, either moving to the next page or previous page\n * @param {boolean} next - If true, will move to the next page, otherwise to the previous page\n */\n private handleButtonClick(next: boolean) {\n const currentPage = next ? this.pageNumber + 1 : this.pageNumber - 1;\n this.pageNumber = currentPage;\n\n // Dispatch a custom event to notify about the page change\n this.dispatchEvent(\n new CustomEvent('on-page-number-change', {\n detail: { value: currentPage },\n bubbles: true, // Allows parent components to catch it\n composed: true, // Required for the event to pass through the Shadow DOM boundary\n })\n );\n }\n\n override render() {\n const disableBackButton = this.pageNumber <= this.SMALLEST_PAGE_NUMBER;\n const disableNextButton = this.pageNumber >= this.numberOfPages;\n\n // Render back button, current page number, and next button\n return html`\n <kyn-button\n iconposition=\"center\"\n kind=\"ghost\"\n type=\"button\"\n size=\"small\"\n ?disabled=${disableBackButton}\n @on-click=${() => this.handleButtonClick(false)}\n description=${this.textStrings.previousPage}\n >\n <span slot=\"icon\">${unsafeSVG(chevLeftIcon)}</span>\n </kyn-button>\n\n <span class=\"page-range\" role=\"status\" aria-live=\"polite\">\n ${this.pageNumber} ${this.textStrings.of} ${this.numberOfPages}
|
|
1
|
+
{"version":3,"file":"pagination-navigation-buttons.js","sources":["../../../../src/components/reusable/pagination/pagination-navigation-buttons.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { html, LitElement } from 'lit';\nimport { property, customElement, state } from 'lit/decorators.js';\n\n// Import required components and icons\nimport '../button';\nimport '../dropdown';\nimport chevLeftIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-left.svg';\nimport chevRightIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-right.svg';\n\nimport styles from './pagination-navigation-buttons.scss';\n// import { OF_TEXT, PAGES_TEXT } from './constants';\n\n/**\n * `kyn-pagination-navigation-buttons` Web Component.\n *\n * This component provides navigational controls for pagination.\n * It includes back and next buttons, along with displaying the current page and total pages.\n *\n * @fires on-page-number-change - Dispatched when the page number is changed.\n */\n@customElement('kyn-pagination-navigation-buttons')\nexport class PaginationNavigationButtons extends LitElement {\n static override styles = [styles];\n\n // Current page number, defaults to 0\n @property({ type: Number, reflect: true })\n pageNumber = 1;\n\n // Total number of pages, defaults to 0\n @property({ type: Number, reflect: true })\n numberOfPages = 1;\n\n /** Customizable text strings. Inherited from parent\n * @internal\n */\n @property({ type: Object })\n textStrings: any = {};\n\n /** Available options for the page number. */\n @state()\n pageNumberOptions: Array<number> = [];\n\n // Constant representing the smallest possible page number\n private readonly SMALLEST_PAGE_NUMBER = 1;\n\n /** Label for the page size dropdown. Required for accessibility.\n * @internal\n */\n @property({ type: String })\n pageNumberLabel = 'Page number';\n\n /**\n * Handles the button click event, either moving to the next page or previous page\n * @param {boolean} next - If true, will move to the next page, otherwise to the previous page\n */\n private handleButtonClick(next: boolean) {\n const currentPage = next ? this.pageNumber + 1 : this.pageNumber - 1;\n this.pageNumber = currentPage;\n\n // Dispatch a custom event to notify about the page change\n this.dispatchEvent(\n new CustomEvent('on-page-number-change', {\n detail: { value: currentPage },\n bubbles: true, // Allows parent components to catch it\n composed: true, // Required for the event to pass through the Shadow DOM boundary\n })\n );\n }\n\n /**\n * Handles the dropdown change event.\n * @param {CustomEvent} event\n */\n private handleChange(event: CustomEvent) {\n this.pageNumber = event.detail.value;\n\n this.dispatchEvent(\n new CustomEvent('on-page-number-change', {\n detail: { value: Number(event.detail.value) },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n override render() {\n const disableBackButton = this.pageNumber <= this.SMALLEST_PAGE_NUMBER;\n const disableNextButton = this.pageNumber >= this.numberOfPages;\n\n // Render back button, current page number, and next button\n return html`\n <kyn-button\n iconposition=\"center\"\n kind=\"ghost\"\n type=\"button\"\n size=\"small\"\n ?disabled=${disableBackButton}\n @on-click=${() => this.handleButtonClick(false)}\n description=${this.textStrings.previousPage}\n >\n <span slot=\"icon\">${unsafeSVG(chevLeftIcon)}</span>\n </kyn-button>\n\n <span class=\"page-range\" role=\"status\" aria-live=\"polite\">\n <kyn-dropdown\n name=\"page-number\"\n label=\"${this.pageNumberLabel}\"\n ?hideLabel=${true}\n inline\n size=\"sm\"\n value=\"${this.pageNumber.toString()}\"\n @on-change=${(e: CustomEvent) => this.handleChange(e)}\n >\n ${this.pageNumberOptions.map((option) => {\n return html`\n <kyn-dropdown-option value=\"${option.toString()}\">\n ${option.toString()}\n </kyn-dropdown-option>\n `;\n })}\n </kyn-dropdown>\n ${this.textStrings.of} ${this.numberOfPages} ${this.textStrings.pages}\n </span>\n\n <kyn-button\n iconposition=\"center\"\n kind=\"ghost\"\n type=\"button\"\n size=\"small\"\n ?disabled=${disableNextButton}\n @on-click=${() => this.handleButtonClick(true)}\n description=${this.textStrings.nextPage}\n >\n <span slot=\"icon\">${unsafeSVG(chevRightIcon)}</span>\n </kyn-button>\n `;\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('numberOfPages')) {\n this.pageNumberOptions = Array.from(\n { length: this.numberOfPages },\n (_, i) => i + 1\n );\n }\n }\n}\n\n// Define the custom element in the global namespace\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-pagination-navigation-buttons': PaginationNavigationButtons;\n }\n}\n"],"names":["PaginationNavigationButtons","LitElement","constructor","this","pageNumber","numberOfPages","textStrings","pageNumberOptions","SMALLEST_PAGE_NUMBER","pageNumberLabel","handleButtonClick","next","currentPage","dispatchEvent","CustomEvent","detail","value","bubbles","composed","handleChange","event","Number","render","disableBackButton","disableNextButton","html","previousPage","unsafeSVG","chevLeftIcon","toString","e","map","option","of","pages","nextPage","chevRightIcon","willUpdate","changedProps","has","Array","from","length","_","i","styles","__decorate","property","type","reflect","prototype","Object","state","String","customElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsBO,IAAMA,EAAN,cAA0CC,EAA1C,WAAAC,uBAKLC,KAAUC,WAAG,EAIbD,KAAaE,cAAG,EAMhBF,KAAWG,YAAQ,GAInBH,KAAiBI,kBAAkB,GAGlBJ,KAAoBK,qBAAG,EAMxCL,KAAeM,gBAAG,aAiGnB,CA3FS,iBAAAC,CAAkBC,GACxB,MAAMC,EAAcD,EAAOR,KAAKC,WAAa,EAAID,KAAKC,WAAa,EACnED,KAAKC,WAAaQ,EAGlBT,KAAKU,cACH,IAAIC,YAAY,wBAAyB,CACvCC,OAAQ,CAAEC,MAAOJ,GACjBK,SAAS,EACTC,UAAU,IAGf,CAMO,YAAAC,CAAaC,GACnBjB,KAAKC,WAAagB,EAAML,OAAOC,MAE/Bb,KAAKU,cACH,IAAIC,YAAY,wBAAyB,CACvCC,OAAQ,CAAEC,MAAOK,OAAOD,EAAML,OAAOC,QACrCC,SAAS,EACTC,UAAU,IAGf,CAEQ,MAAAI,GACP,MAAMC,EAAoBpB,KAAKC,YAAcD,KAAKK,qBAC5CgB,EAAoBrB,KAAKC,YAAcD,KAAKE,cAGlD,OAAOoB,CAAI;;;;;;oBAMKF;oBACA,IAAMpB,KAAKO,mBAAkB;sBAC3BP,KAAKG,YAAYoB;;4BAEXC,EAAUC;;;;;;mBAMnBzB,KAAKM;wBACD;;;mBAGJN,KAAKC,WAAWyB;uBACXC,GAAmB3B,KAAKgB,aAAaW;;YAEjD3B,KAAKI,kBAAkBwB,KAAKC,GACrBP,CAAI;4CACqBO,EAAOH;kBACjCG,EAAOH;;;;UAKf1B,KAAKG,YAAY2B,MAAM9B,KAAKE,iBAAiBF,KAAKG,YAAY4B;;;;;;;;oBAQpDV;oBACA,IAAMrB,KAAKO,mBAAkB;sBAC3BP,KAAKG,YAAY6B;;4BAEXR,EAAUS;;KAGnC,CAEQ,UAAAC,CAAWC,GACdA,EAAaC,IAAI,mBACnBpC,KAAKI,kBAAoBiC,MAAMC,KAC7B,CAAEC,OAAQvC,KAAKE,gBACf,CAACsC,EAAGC,IAAMA,EAAI,IAGnB,GA3He5C,EAAA6C,OAAS,CAACA,GAI1BC,EAAA,CADCC,EAAS,CAAEC,KAAM3B,OAAQ4B,SAAS,KACpBjD,EAAAkD,UAAA,kBAAA,GAIfJ,EAAA,CADCC,EAAS,CAAEC,KAAM3B,OAAQ4B,SAAS,KACjBjD,EAAAkD,UAAA,qBAAA,GAMlBJ,EAAA,CADCC,EAAS,CAAEC,KAAMG,UACInD,EAAAkD,UAAA,mBAAA,GAItBJ,EAAA,CADCM,KACqCpD,EAAAkD,UAAA,yBAAA,GAStCJ,EAAA,CADCC,EAAS,CAAEC,KAAMK,UACcrD,EAAAkD,UAAA,uBAAA,GA5BrBlD,EAA2B8C,EAAA,CADvCQ,EAAc,sCACFtD"}
|