@ds-mo/ui 14.4.0 → 14.4.2

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.
Files changed (123) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +6 -5
  4. package/dist/components/ds-bar-nav.js +1 -1
  5. package/dist/components/ds-bar-title.js +1 -1
  6. package/dist/components/ds-bar-workflow.js +1 -1
  7. package/dist/components/ds-menu.js +1 -1
  8. package/dist/components/ds-mobile-header.js +1 -1
  9. package/dist/components/ds-mobile-section-switcher.js +1 -1
  10. package/dist/components/ds-pagination.js +1 -1
  11. package/dist/components/ds-panel-nav.js +1 -1
  12. package/dist/components/ds-panel-tool-header.js +1 -1
  13. package/dist/components/ds-panel-tool-search.js +1 -1
  14. package/dist/components/ds-panel-tools.js +1 -1
  15. package/dist/components/ds-shell-app.js +1 -1
  16. package/dist/components/ds-shell-page.js +1 -1
  17. package/dist/components/ds-shell-tools.js +1 -1
  18. package/dist/components/ds-swatch-picker.js +1 -1
  19. package/dist/components/ds-table.js +1 -1
  20. package/dist/components/ds-table.js.map +1 -1
  21. package/dist/components/ds-toast.js +1 -1
  22. package/dist/components/ds-typing-indicator.js +1 -1
  23. package/dist/components/{p-DhDWmMxD.js → p-B2hqUkg-.js} +2 -2
  24. package/dist/components/{p-CbqdWBAC.js → p-BGGm1NB1.js} +2 -2
  25. package/dist/components/{p-b-Dlg3y_.js → p-BXNLaPbw.js} +2 -2
  26. package/dist/components/{p-CW7ML-3h.js → p-Ba1l3Yot.js} +2 -2
  27. package/dist/components/{p-DF52Grw1.js → p-BiIdszv1.js} +2 -2
  28. package/dist/components/{p-RLiackRN.js → p-CXqVVdW2.js} +2 -2
  29. package/dist/components/{p-CKfdvOZ2.js → p-Ccq1RmOb.js} +2 -2
  30. package/dist/components/p-CvpsV-jC.js +2 -0
  31. package/dist/components/p-CvpsV-jC.js.map +1 -0
  32. package/dist/components/{p-CDF_nP74.js → p-DgWGfscR.js} +2 -2
  33. package/dist/components/{p-O3OuOaj3.js → p-DjqZWBnM.js} +2 -2
  34. package/dist/components/{p-ChWnbdFS.js → p-o1v7Choa.js} +2 -2
  35. package/dist/components/{p-BDXMXH_i.js → p-w64TmQd-.js} +2 -2
  36. package/dist/docs/components.json +8 -1
  37. package/dist/mcp-data/registry/agent-activity.json +1 -1
  38. package/dist/mcp-data/registry/agent-questionnaire.json +1 -1
  39. package/dist/mcp-data/registry/agent-response.json +1 -1
  40. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  41. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  42. package/dist/mcp-data/registry/attachment-list.json +1 -1
  43. package/dist/mcp-data/registry/avatar.json +1 -1
  44. package/dist/mcp-data/registry/badge.json +1 -1
  45. package/dist/mcp-data/registry/banner.json +1 -1
  46. package/dist/mcp-data/registry/bar-action.json +1 -1
  47. package/dist/mcp-data/registry/bar-nav.json +1 -1
  48. package/dist/mcp-data/registry/bar-title.json +1 -1
  49. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  50. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  51. package/dist/mcp-data/registry/button-filled.json +1 -1
  52. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  53. package/dist/mcp-data/registry/card-chart.json +1 -1
  54. package/dist/mcp-data/registry/card-overview.json +1 -1
  55. package/dist/mcp-data/registry/card-setting.json +1 -1
  56. package/dist/mcp-data/registry/chart-legend.json +1 -1
  57. package/dist/mcp-data/registry/chart.json +1 -1
  58. package/dist/mcp-data/registry/checkbox.json +1 -1
  59. package/dist/mcp-data/registry/chip.json +1 -1
  60. package/dist/mcp-data/registry/code-block.json +1 -1
  61. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  62. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  63. package/dist/mcp-data/registry/conversation-list.json +1 -1
  64. package/dist/mcp-data/registry/divider.json +1 -1
  65. package/dist/mcp-data/registry/empty-state.json +1 -1
  66. package/dist/mcp-data/registry/field.json +1 -1
  67. package/dist/mcp-data/registry/filter-menu.json +1 -1
  68. package/dist/mcp-data/registry/icon.json +1 -1
  69. package/dist/mcp-data/registry/input.json +1 -1
  70. package/dist/mcp-data/registry/loader.json +1 -1
  71. package/dist/mcp-data/registry/markdown.json +1 -1
  72. package/dist/mcp-data/registry/menu.json +1 -1
  73. package/dist/mcp-data/registry/message-actions.json +1 -1
  74. package/dist/mcp-data/registry/message-bubble.json +1 -1
  75. package/dist/mcp-data/registry/message-composer.json +1 -1
  76. package/dist/mcp-data/registry/message-scroller.json +1 -1
  77. package/dist/mcp-data/registry/message.json +1 -1
  78. package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
  79. package/dist/mcp-data/registry/mobile-header.json +1 -1
  80. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  81. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  82. package/dist/mcp-data/registry/modal.json +1 -1
  83. package/dist/mcp-data/registry/pagination.json +6 -5
  84. package/dist/mcp-data/registry/panel-nav.json +1 -1
  85. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  86. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  87. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  88. package/dist/mcp-data/registry/panel-tools.json +1 -1
  89. package/dist/mcp-data/registry/radio.json +1 -1
  90. package/dist/mcp-data/registry/registry.json +6 -5
  91. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  92. package/dist/mcp-data/registry/select.json +1 -1
  93. package/dist/mcp-data/registry/shell-app.json +1 -1
  94. package/dist/mcp-data/registry/shell-page.json +1 -1
  95. package/dist/mcp-data/registry/shell-tools.json +1 -1
  96. package/dist/mcp-data/registry/skeleton.json +1 -1
  97. package/dist/mcp-data/registry/slider.json +1 -1
  98. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  99. package/dist/mcp-data/registry/switch.json +1 -1
  100. package/dist/mcp-data/registry/tab-group.json +1 -1
  101. package/dist/mcp-data/registry/table.json +5 -5
  102. package/dist/mcp-data/registry/tag.json +1 -1
  103. package/dist/mcp-data/registry/text.json +1 -1
  104. package/dist/mcp-data/registry/toast.json +1 -1
  105. package/dist/mcp-data/registry/tooltip-chart.json +1 -1
  106. package/dist/mcp-data/registry/tooltip.json +1 -1
  107. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  108. package/dist/types/components/Table/Table.d.ts +1 -0
  109. package/dist/types/stories/Foundation/typography-styles.d.ts +18 -0
  110. package/package.json +2 -2
  111. package/dist/components/p-Cc5xgR17.js +0 -2
  112. package/dist/components/p-Cc5xgR17.js.map +0 -1
  113. /package/dist/components/{p-DhDWmMxD.js.map → p-B2hqUkg-.js.map} +0 -0
  114. /package/dist/components/{p-CbqdWBAC.js.map → p-BGGm1NB1.js.map} +0 -0
  115. /package/dist/components/{p-b-Dlg3y_.js.map → p-BXNLaPbw.js.map} +0 -0
  116. /package/dist/components/{p-CW7ML-3h.js.map → p-Ba1l3Yot.js.map} +0 -0
  117. /package/dist/components/{p-DF52Grw1.js.map → p-BiIdszv1.js.map} +0 -0
  118. /package/dist/components/{p-RLiackRN.js.map → p-CXqVVdW2.js.map} +0 -0
  119. /package/dist/components/{p-CKfdvOZ2.js.map → p-Ccq1RmOb.js.map} +0 -0
  120. /package/dist/components/{p-CDF_nP74.js.map → p-DgWGfscR.js.map} +0 -0
  121. /package/dist/components/{p-O3OuOaj3.js.map → p-DjqZWBnM.js.map} +0 -0
  122. /package/dist/components/{p-ChWnbdFS.js.map → p-o1v7Choa.js.map} +0 -0
  123. /package/dist/components/{p-BDXMXH_i.js.map → p-w64TmQd-.js.map} +0 -0
@@ -1,2 +0,0 @@
1
- import{p as e,H as i,c as a,h as t,a as s,t as n}from"./index.js";import{d as o}from"./p-D8nnhQNJ.js";import{d}from"./p-CTTDiW33.js";import{d as r}from"./p-C5TrNd31.js";import{d as c}from"./p-DLkNcCY0.js";import{d as l}from"./p-BFfLvMZd.js";import{d as p}from"./p-Ca-I2UnB.js";import{d as g}from"./p-CRLRjtsc.js";import{d as f}from"./p-DZFilC--.js";import{d as h}from"./p-CtOK5oZ1.js";const b=[25,50,100,200];function m(e){return Number.isFinite(e)?Math.max(0,Math.trunc(e)):0}function u(e,i){return Number.isFinite(e)&&e>0?Math.trunc(e):i}function z(e){const i=u(e.pageSize,b[0]);const a=e.pageSizeMode==="fit"?"fit":"fixed";const t=m(e.totalItems);const s=Math.max(1,Math.ceil(t/i));const n=Math.min(m(e.pageIndex),s-1);const o=(e.pageSizeOptions?.length?e.pageSizeOptions:b).map((e=>u(e,0))).filter((e=>e>0));const d=[...new Set(a==="fixed"?[...o,i]:o)].sort(((e,i)=>e-i));const r=t===0?0:n*i+1;const c=t===0?0:Math.min(t,r+i-1);return{pageIndex:n,pageSize:i,pageSizeMode:a,totalItems:t,totalPages:s,firstItem:r,lastItem:c,pageSizeOptions:d}}const v=()=>`.ds-visually-hidden.sc-ds-pagination-h,.ds-visually-hidden.sc-ds-pagination{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sc-ds-pagination-h{display:block;box-sizing:border-box;min-width:0;max-width:100%;overflow-x:auto;scrollbar-width:none}.sc-ds-pagination-h::-webkit-scrollbar{display:none}.pagination.sc-ds-pagination,.pagination__page-size.sc-ds-pagination,.pagination__navigation.sc-ds-pagination{display:flex;align-items:center;box-sizing:border-box}.pagination.sc-ds-pagination{width:max-content;min-width:100%;gap:var(--dimension-space-200)}.pagination__page-size.sc-ds-pagination,.pagination__navigation.sc-ds-pagination{flex:0 0 auto}.pagination__page-size.sc-ds-pagination{gap:var(--dimension-space-100)}.pagination__navigation.sc-ds-pagination{gap:var(--dimension-space-050)}.pagination__range.sc-ds-pagination,.pagination__page.sc-ds-pagination,.pagination__label.sc-ds-pagination{display:inline-flex;align-items:center;flex:0 0 auto;white-space:nowrap}.pagination__page.sc-ds-pagination{justify-content:center;min-inline-size:calc(var(--dimension-size-800) + var(--dimension-space-200));padding-inline:var(--dimension-space-050)}`;let S=0;const x=e(class e extends i{constructor(e){super();if(e!==false){this.__registerHost()}this.dsChange=a(this,"dsChange");this.pageIndex=0;this.pageSize=25;this.pageSizeMode="fixed";this.totalItems=0;this.pageSizeOptions=[25,50,100,200];this.fitToPage=false;this.fitPageSizeLabel="Fit to page";this.fitPageSizeTriggerLabel="Fit";this.itemLabel="items";this.pageSizeLabel="Items";this.label="Pagination";this.loading=false;this.pageSizeControlId=`ds-pagination-${++S}-page-size`}requestPage(e){const i=this.resolvedState;if(this.loading||e===i.pageIndex||e<0||e>=i.totalPages){return}this.dsChange.emit({pageIndex:e,pageSize:i.pageSize,pageSizeMode:i.pageSizeMode,totalItems:i.totalItems,pageSizeOptions:i.pageSizeOptions,fitToPage:this.fitToPage,fitPageSize:this.resolvedFitPageSize,fitPageSizeLabel:this.fitPageSizeLabel,fitPageSizeTriggerLabel:this.fitPageSizeTriggerLabel,itemLabel:this.itemLabel,pageSizeLabel:this.pageSizeLabel,ariaLabel:this.label,previousPageIndex:i.pageIndex,previousPageSize:i.pageSize,previousPageSizeMode:i.pageSizeMode,reason:"page"})}requestPageSize(e){if(this.loading||typeof e!=="string")return;const i=this.resolvedState;const a=e==="fit"?"fit":"fixed";const t=a==="fit"?this.resolvedFitPageSize:Number(e);if(!t||t===i.pageSize&&a===i.pageSizeMode)return;this.dsChange.emit({pageIndex:0,pageSize:Math.trunc(t),pageSizeMode:a,totalItems:i.totalItems,pageSizeOptions:i.pageSizeOptions,fitToPage:this.fitToPage,fitPageSize:this.resolvedFitPageSize,fitPageSizeLabel:this.fitPageSizeLabel,fitPageSizeTriggerLabel:this.fitPageSizeTriggerLabel,itemLabel:this.itemLabel,pageSizeLabel:this.pageSizeLabel,ariaLabel:this.label,previousPageIndex:i.pageIndex,previousPageSize:i.pageSize,previousPageSizeMode:i.pageSizeMode,reason:"page-size"})}handleKeyDown(e){if(e.defaultPrevented||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey){return}const a=e.composedPath().some((e=>e instanceof i&&(e.tagName==="DS-SELECT"||["INPUT","SELECT","TEXTAREA"].includes(e.tagName))));if(a||e.key!=="ArrowLeft"&&e.key!=="ArrowRight")return;const t=this.resolvedState;const s=e.key==="ArrowLeft"?t.pageIndex-1:t.pageIndex+1;if(this.loading||s<0||s>=t.totalPages)return;e.preventDefault();this.requestPage(s)}get resolvedFitPageSize(){return Number.isFinite(this.fitPageSize)&&Number(this.fitPageSize)>0?Math.trunc(Number(this.fitPageSize)):undefined}get resolvedState(){return z({pageIndex:this.pageIndex,pageSize:this.pageSize,pageSizeMode:this.pageSizeMode,totalItems:this.totalItems,pageSizeOptions:this.pageSizeOptions})}render(){const e=this.resolvedState;const i=e.pageIndex===0;const a=e.pageIndex===e.totalPages-1;const n=`${e.firstItem}–${e.lastItem} / ${e.totalItems}`;const o=`${e.pageIndex+1} / ${e.totalPages}`;const d=`${e.firstItem}–${e.lastItem} of ${e.totalItems}`;const r=`Page ${e.pageIndex+1} of ${e.totalPages}`;const c=this.pageSizeAriaLabel??`${this.pageSizeLabel} per page`;const l=e.pageSizeOptions.map((e=>({label:String(e),value:String(e)})));if(this.fitToPage){l.push({label:this.fitPageSizeLabel,value:"fit",isInactive:this.resolvedFitPageSize===undefined})}return t(s,{key:"7f5d9665efe630d9b36e44a56080142fda479b14"},t("nav",{key:"caeecd225b1b6729cbf78e41b2c2062f7f4106d2",class:"pagination","aria-label":this.label,"aria-busy":this.loading?"true":undefined,onKeyDown:e=>this.handleKeyDown(e)},t("div",{key:"860290191577ce319ade473239fb763eaf58a04d",class:"pagination__page-size"},t("ds-text",{key:"940064381fec85322519bdc8a71868953693d929",class:"pagination__label",as:"span",variant:"text-body-medium",color:"secondary","aria-hidden":"true"},this.pageSizeLabel,":"),t("span",{key:"8b1e18e3a7d544803bac8bf98aa9351146b66850",id:`${this.pageSizeControlId}-label`,class:"ds-visually-hidden"},c),t("ds-select",{key:"50d09f7813fbb536f255ffb634cf56c0d9d97160",size:"md",inputId:this.pageSizeControlId,ariaLabelledby:`${this.pageSizeControlId}-label`,options:l,value:e.pageSizeMode==="fit"?"fit":String(e.pageSize),triggerLabel:e.pageSizeMode==="fit"?this.fitPageSizeTriggerLabel:undefined,indicator:"up-down",allowClear:false,activeFill:false,isInactive:this.loading,onDsChange:e=>{e.stopPropagation();this.requestPageSize(e.detail)}})),t("ds-text",{key:"031a672e5e83759218d15d5a4c7c65bd634e8dac",class:"pagination__range",as:"span",variant:"text-body-medium",color:"secondary",fontFeature:"tabular-nums"},n),t("div",{key:"9b7cd979fa2c4a7dc24a30bdf99565edd21209fd",class:"pagination__navigation"},t("ds-button-unfilled",{key:"be8c10a5fab1225fb481f7a18409f1a6353126d1",variant:"icon",size:"md",icon:"ChevronLeftDouble",ariaLabel:"First page",hasBorder:false,isInactive:this.loading||i,onDsClick:()=>this.requestPage(0)}),t("ds-button-unfilled",{key:"dc68bea73685900ab83fa378b5476f6284369d3a",variant:"icon",size:"md",icon:"ChevronLeft",ariaLabel:"Previous page",hasBorder:false,isInactive:this.loading||i,onDsClick:()=>this.requestPage(e.pageIndex-1)}),t("ds-text",{key:"c307dffabe2e9160d1f31c618317513470d9a119",class:"pagination__page",as:"span",variant:"text-body-medium",color:"secondary",fontFeature:"tabular-nums"},o),t("ds-button-unfilled",{key:"44cc58dc027aed3c2b237f8c2dc9e4e13d517d42",variant:"icon",size:"md",icon:"ChevronRight",ariaLabel:"Next page",hasBorder:false,isInactive:this.loading||a,onDsClick:()=>this.requestPage(e.pageIndex+1)}),t("ds-button-unfilled",{key:"93a6803c86c8ef1e9b8274fe13002684946c68c0",variant:"icon",size:"md",icon:"ChevronRightDouble",ariaLabel:"Last page",hasBorder:false,isInactive:this.loading||a,onDsClick:()=>this.requestPage(e.totalPages-1)})),t("span",{key:"f194bd14a1452d354fb3bcfab8bf27718a0ac48a",class:"ds-visually-hidden",role:"status","aria-live":"polite","aria-atomic":"true"},d," ",this.itemLabel,". ",r,".")))}static get style(){return v()}},[2,"ds-pagination",{pageIndex:[2,"page-index"],pageSize:[2,"page-size"],pageSizeMode:[1,"page-size-mode"],totalItems:[2,"total-items"],pageSizeOptions:[16],fitToPage:[4,"fit-to-page"],fitPageSize:[2,"fit-page-size"],fitPageSizeLabel:[1,"fit-page-size-label"],fitPageSizeTriggerLabel:[1,"fit-page-size-trigger-label"],itemLabel:[1,"item-label"],pageSizeLabel:[1,"page-size-label"],pageSizeAriaLabel:[1,"page-size-aria-label"],label:[1],loading:[4]}]);function y(){if(typeof customElements==="undefined"){return}const e=["ds-pagination","ds-badge","ds-button-unfilled","ds-checkbox","ds-empty-state","ds-icon","ds-loader","ds-select","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-pagination":if(!customElements.get(n(e))){customElements.define(n(e),x)}break;case"ds-badge":if(!customElements.get(n(e))){o()}break;case"ds-button-unfilled":if(!customElements.get(n(e))){d()}break;case"ds-checkbox":if(!customElements.get(n(e))){r()}break;case"ds-empty-state":if(!customElements.get(n(e))){c()}break;case"ds-icon":if(!customElements.get(n(e))){l()}break;case"ds-loader":if(!customElements.get(n(e))){p()}break;case"ds-select":if(!customElements.get(n(e))){g()}break;case"ds-text":if(!customElements.get(n(e))){f()}break;case"ds-tooltip":if(!customElements.get(n(e))){h()}break}}))}y();export{x as P,y as d};
2
- //# sourceMappingURL=p-Cc5xgR17.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["DEFAULT_PAGE_SIZE_OPTIONS","nonNegativeInteger","value","Number","isFinite","Math","max","trunc","positiveInteger","fallback","resolvePaginationState","state","pageSize","pageSizeMode","totalItems","totalPages","ceil","pageIndex","min","options","pageSizeOptions","length","map","filter","Set","sort","left","right","firstItem","lastItem","paginationCss","paginationId","Pagination","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","fitToPage","fitPageSizeLabel","fitPageSizeTriggerLabel","itemLabel","pageSizeLabel","label","loading","pageSizeControlId","requestPage","resolvedState","dsChange","emit","fitPageSize","resolvedFitPageSize","ariaLabel","previousPageIndex","previousPageSize","previousPageSizeMode","reason","requestPageSize","nextMode","handleKeyDown","event","defaultPrevented","altKey","ctrlKey","metaKey","shiftKey","fromChoiceControl","composedPath","some","node","tagName","includes","key","preventDefault","undefined","render","atStart","atEnd","range","page","announcedRange","announcedPage","pageSizeAriaLabel","String","push","isInactive","h","Host","class","onKeyDown","as","variant","color","id","size","inputId","ariaLabelledby","triggerLabel","indicator","allowClear","activeFill","onDsChange","stopPropagation","detail","fontFeature","icon","hasBorder","onDsClick","role"],"sources":["src/wc/components/Pagination/pagination-model.ts","src/wc/components/Pagination/Pagination.css?tag=ds-pagination&encapsulation=scoped","src/wc/components/Pagination/Pagination.tsx"],"sourcesContent":["import type { PaginationPageSizeMode, PaginationState } from './pagination-types';\n\nexport const DEFAULT_PAGE_SIZE_OPTIONS = [25, 50, 100, 200] as const;\n\nexport interface ResolvedPaginationState {\n pageIndex: number;\n pageSize: number;\n pageSizeMode: PaginationPageSizeMode;\n totalItems: number;\n totalPages: number;\n firstItem: number;\n lastItem: number;\n pageSizeOptions: number[];\n}\n\nfunction nonNegativeInteger(value: number): number {\n return Number.isFinite(value) ? Math.max(0, Math.trunc(value)) : 0;\n}\n\nfunction positiveInteger(value: number, fallback: number): number {\n return Number.isFinite(value) && value > 0 ? Math.trunc(value) : fallback;\n}\n\nexport function resolvePaginationState(\n state: Pick<\n PaginationState,\n 'pageIndex' | 'pageSize' | 'pageSizeMode' | 'totalItems' | 'pageSizeOptions'\n >,\n): ResolvedPaginationState {\n const pageSize = positiveInteger(state.pageSize, DEFAULT_PAGE_SIZE_OPTIONS[0]);\n const pageSizeMode = state.pageSizeMode === 'fit' ? 'fit' : 'fixed';\n const totalItems = nonNegativeInteger(state.totalItems);\n const totalPages = Math.max(1, Math.ceil(totalItems / pageSize));\n const pageIndex = Math.min(nonNegativeInteger(state.pageIndex), totalPages - 1);\n const options = (state.pageSizeOptions?.length\n ? state.pageSizeOptions\n : DEFAULT_PAGE_SIZE_OPTIONS\n )\n .map(value => positiveInteger(value, 0))\n .filter(value => value > 0);\n const pageSizeOptions = [\n ...new Set(pageSizeMode === 'fixed' ? [...options, pageSize] : options),\n ].sort((left, right) => left - right);\n const firstItem = totalItems === 0 ? 0 : pageIndex * pageSize + 1;\n const lastItem = totalItems === 0 ? 0 : Math.min(totalItems, firstItem + pageSize - 1);\n\n return {\n pageIndex,\n pageSize,\n pageSizeMode,\n totalItems,\n totalPages,\n firstItem,\n lastItem,\n pageSizeOptions,\n };\n}\n","@import '../../utils/visually-hidden.css';\n\n:host {\n display: block;\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n:host::-webkit-scrollbar {\n display: none;\n}\n\n.pagination,\n.pagination__page-size,\n.pagination__navigation {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n}\n\n.pagination {\n width: max-content;\n min-width: 100%;\n gap: var(--dimension-space-200);\n}\n\n.pagination__page-size,\n.pagination__navigation {\n flex: 0 0 auto;\n}\n\n.pagination__page-size {\n gap: var(--dimension-space-100);\n}\n\n.pagination__navigation {\n gap: var(--dimension-space-050);\n}\n\n.pagination__range,\n.pagination__page,\n.pagination__label {\n display: inline-flex;\n align-items: center;\n flex: 0 0 auto;\n white-space: nowrap;\n}\n\n.pagination__page {\n justify-content: center;\n min-inline-size: calc(var(--dimension-size-800) + var(--dimension-space-200));\n padding-inline: var(--dimension-space-050);\n}\n","import { Component, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport { resolvePaginationState } from './pagination-model';\nimport type {\n PaginationChangeDetail,\n PaginationPageSizeMode,\n} from './pagination-types';\n\nlet paginationId = 0;\n\n@Component({\n tag: 'ds-pagination',\n styleUrl: 'Pagination.css',\n scoped: true,\n})\nexport class Pagination {\n /** Controlled zero-based page index. */\n @Prop() pageIndex: number = 0;\n /** Controlled number of top-level items on a full page. */\n @Prop() pageSize: number = 25;\n /** Whether pageSize is a fixed choice or a measured Fit snapshot. */\n @Prop() pageSizeMode: PaginationPageSizeMode = 'fixed';\n /** Controlled total number of top-level items across every page. */\n @Prop() totalItems: number = 0;\n /** Available page sizes. Assign arrays through JavaScript. */\n @Prop() pageSizeOptions: number[] = [25, 50, 100, 200];\n /** Include the Fit to page choice. */\n @Prop() fitToPage: boolean = false;\n /** Effective whole-item capacity to request when Fit is selected. */\n @Prop() fitPageSize: number | undefined;\n /** Full choice-list label for Fit. */\n @Prop() fitPageSizeLabel: string = 'Fit to page';\n /** Compact closed-trigger label while Fit is selected. */\n @Prop() fitPageSizeTriggerLabel: string = 'Fit';\n /** Localized plural noun used by assistive range announcements. */\n @Prop() itemLabel: string = 'items';\n /** Visible page-size control label. */\n @Prop() pageSizeLabel: string = 'Items';\n /** Accessible page-size control label. Defaults to “{pageSizeLabel} per page”. */\n @Prop() pageSizeAriaLabel: string | undefined;\n /** Accessible name for the pagination navigation region. */\n @Prop() label: string = 'Pagination';\n /** Prevent interaction while the owner replaces the current data page. */\n @Prop() loading: boolean = false;\n\n /** Emits the complete next controlled state after a page or page-size request. */\n @Event() dsChange!: EventEmitter<PaginationChangeDetail>;\n\n private readonly pageSizeControlId = `ds-pagination-${++paginationId}-page-size`;\n\n private requestPage(pageIndex: number): void {\n const state = this.resolvedState;\n if (this.loading || pageIndex === state.pageIndex || pageIndex < 0 || pageIndex >= state.totalPages) {\n return;\n }\n this.dsChange.emit({\n pageIndex,\n pageSize: state.pageSize,\n pageSizeMode: state.pageSizeMode,\n totalItems: state.totalItems,\n pageSizeOptions: state.pageSizeOptions,\n fitToPage: this.fitToPage,\n fitPageSize: this.resolvedFitPageSize,\n fitPageSizeLabel: this.fitPageSizeLabel,\n fitPageSizeTriggerLabel: this.fitPageSizeTriggerLabel,\n itemLabel: this.itemLabel,\n pageSizeLabel: this.pageSizeLabel,\n ariaLabel: this.label,\n previousPageIndex: state.pageIndex,\n previousPageSize: state.pageSize,\n previousPageSizeMode: state.pageSizeMode,\n reason: 'page',\n });\n }\n\n private requestPageSize(value: string | string[]): void {\n if (this.loading || typeof value !== 'string') return;\n const state = this.resolvedState;\n const nextMode: PaginationPageSizeMode = value === 'fit' ? 'fit' : 'fixed';\n const pageSize = nextMode === 'fit' ? this.resolvedFitPageSize : Number(value);\n if (!pageSize || (pageSize === state.pageSize && nextMode === state.pageSizeMode)) return;\n this.dsChange.emit({\n pageIndex: 0,\n pageSize: Math.trunc(pageSize),\n pageSizeMode: nextMode,\n totalItems: state.totalItems,\n pageSizeOptions: state.pageSizeOptions,\n fitToPage: this.fitToPage,\n fitPageSize: this.resolvedFitPageSize,\n fitPageSizeLabel: this.fitPageSizeLabel,\n fitPageSizeTriggerLabel: this.fitPageSizeTriggerLabel,\n itemLabel: this.itemLabel,\n pageSizeLabel: this.pageSizeLabel,\n ariaLabel: this.label,\n previousPageIndex: state.pageIndex,\n previousPageSize: state.pageSize,\n previousPageSizeMode: state.pageSizeMode,\n reason: 'page-size',\n });\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n if (event.defaultPrevented || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n const fromChoiceControl = event.composedPath().some(node =>\n node instanceof HTMLElement &&\n (node.tagName === 'DS-SELECT' || ['INPUT', 'SELECT', 'TEXTAREA'].includes(node.tagName)),\n );\n if (fromChoiceControl || (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight')) return;\n const state = this.resolvedState;\n const pageIndex = event.key === 'ArrowLeft' ? state.pageIndex - 1 : state.pageIndex + 1;\n if (this.loading || pageIndex < 0 || pageIndex >= state.totalPages) return;\n event.preventDefault();\n this.requestPage(pageIndex);\n }\n\n private get resolvedFitPageSize(): number | undefined {\n return Number.isFinite(this.fitPageSize) && Number(this.fitPageSize) > 0\n ? Math.trunc(Number(this.fitPageSize))\n : undefined;\n }\n\n private get resolvedState() {\n return resolvePaginationState({\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n pageSizeMode: this.pageSizeMode,\n totalItems: this.totalItems,\n pageSizeOptions: this.pageSizeOptions,\n });\n }\n\n render() {\n const state = this.resolvedState;\n const atStart = state.pageIndex === 0;\n const atEnd = state.pageIndex === state.totalPages - 1;\n const range = `${state.firstItem}–${state.lastItem} / ${state.totalItems}`;\n const page = `${state.pageIndex + 1} / ${state.totalPages}`;\n const announcedRange = `${state.firstItem}–${state.lastItem} of ${state.totalItems}`;\n const announcedPage = `Page ${state.pageIndex + 1} of ${state.totalPages}`;\n const pageSizeAriaLabel = this.pageSizeAriaLabel ?? `${this.pageSizeLabel} per page`;\n const options: Array<{ label: string; value: string; isInactive?: boolean }> =\n state.pageSizeOptions.map(value => ({ label: String(value), value: String(value) }));\n if (this.fitToPage) {\n options.push({\n label: this.fitPageSizeLabel,\n value: 'fit',\n isInactive: this.resolvedFitPageSize === undefined,\n });\n }\n\n return (\n <Host>\n <nav\n class=\"pagination\"\n aria-label={this.label}\n aria-busy={this.loading ? 'true' : undefined}\n onKeyDown={event => this.handleKeyDown(event)}\n >\n <div class=\"pagination__page-size\">\n <ds-text\n class=\"pagination__label\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n aria-hidden=\"true\"\n >\n {this.pageSizeLabel}:\n </ds-text>\n <span id={`${this.pageSizeControlId}-label`} class=\"ds-visually-hidden\">\n {pageSizeAriaLabel}\n </span>\n <ds-select\n size=\"md\"\n inputId={this.pageSizeControlId}\n ariaLabelledby={`${this.pageSizeControlId}-label`}\n options={options}\n value={state.pageSizeMode === 'fit' ? 'fit' : String(state.pageSize)}\n triggerLabel={state.pageSizeMode === 'fit' ? this.fitPageSizeTriggerLabel : undefined}\n indicator=\"up-down\"\n allowClear={false}\n activeFill={false}\n isInactive={this.loading}\n onDsChange={event => {\n event.stopPropagation();\n this.requestPageSize(event.detail);\n }}\n />\n </div>\n <ds-text\n class=\"pagination__range\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n fontFeature=\"tabular-nums\"\n >\n {range}\n </ds-text>\n <div class=\"pagination__navigation\">\n <ds-button-unfilled\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronLeftDouble\"\n ariaLabel=\"First page\"\n hasBorder={false}\n isInactive={this.loading || atStart}\n onDsClick={() => this.requestPage(0)}\n />\n <ds-button-unfilled\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronLeft\"\n ariaLabel=\"Previous page\"\n hasBorder={false}\n isInactive={this.loading || atStart}\n onDsClick={() => this.requestPage(state.pageIndex - 1)}\n />\n <ds-text\n class=\"pagination__page\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n fontFeature=\"tabular-nums\"\n >\n {page}\n </ds-text>\n <ds-button-unfilled\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronRight\"\n ariaLabel=\"Next page\"\n hasBorder={false}\n isInactive={this.loading || atEnd}\n onDsClick={() => this.requestPage(state.pageIndex + 1)}\n />\n <ds-button-unfilled\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronRightDouble\"\n ariaLabel=\"Last page\"\n hasBorder={false}\n isInactive={this.loading || atEnd}\n onDsClick={() => this.requestPage(state.totalPages - 1)}\n />\n </div>\n <span class=\"ds-visually-hidden\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcedRange} {this.itemLabel}. {announcedPage}.\n </span>\n </nav>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}