@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 3.21 kB
JavaScript
import{Heading as e}from"../support/Heading.js";import{classes as t,isActivationKey as n}from"../support/widgetUtils.js";import{tsx as i}from"../support/jsxFactory.js";const o="esri-item-list",l={base:o,list:`${o}__list`,group:`${o}__group`,scroller:`${o}__scroller`,groupHeader:`${o}__group__header`,item:`${o}__list-item`,itemSelected:`${o}__list-item--selected`,itemContainer:`${o}__list-item-container`,itemLabel:`${o}__list-item-label`,itemIcon:`${o}__list-item-icon`,noMatchesMessage:`${o}__no-matches-message`,noItemsMessage:`${o}__no-items-message`,filterContainer:`${o}__filter-container`,filterContainerSticky:`${o}__filter-container--sticky`,filterPlaceholder:`${o}__filter-placeholder`,filterInput:`${o}__filter-input`,filterPlaceholderText:`${o}__filter-placeholder-text`,searchIcon:"esri-icon-search",widget:"esri-widget",input:"esri-input"},r=4;function s(e){const{filterEnabled:t=!0,filterText:n="",headingLevel:o=r,id:l,identify:s,items:a,messages:d,onFilterChange:u,onItemMouseEnter:I,onItemMouseLeave:f,onItemSelect:g,renderIcon:p,selectedItem:_,selectionMode:v="none"}=e,h=e.enableListScroll??!0;return i("div",{key:l},i("calcite-list",{selectionMode:v,selectionAppearance:"border"},t?m({filterText:n,messages:d,onFilterChange:u,id:l}):null,c({enableListScroll:h,identify:s,items:a,selectedItem:_,messages:d,filterText:n,headingLevel:o,renderIcon:p,onItemMouseLeave:f,onItemMouseEnter:I,onItemSelect:g})))}function a(e){return!!e.items}function c(e){const{headingLevel:t,identify:n,items:o,renderIcon:r,filterText:s,onItemMouseLeave:c,onItemMouseEnter:m,onItemSelect:u,selectedItem:I}=e,g=e.enableListScroll?l.scroller:void 0;return 0===o.length?i("div",{class:l.noMatchesMessage,key:"no-matches"},e.messages.noMatches):i("div",{class:g,key:"item-container"},o.map((e=>a(e)?f({group:e,filterText:s,headingLevel:t,identify:n,onItemMouseLeave:c,onItemMouseEnter:m,onItemSelect:u,renderIcon:r,selectedItem:I}):d({item:e,identify:n,grouped:!0,onItemMouseLeave:c,onItemMouseEnter:m,onItemSelect:u,renderIcon:r,filterText:s,selectedItem:I}))))}function m(e){const{messages:t,filterText:n,enableListScroll:o}=e;return i("div",{key:"filter",class:o?void 0:l.filterContainerSticky},i("calcite-input",{onCalciteInputInput:t=>{const n=t.currentTarget;e.onFilterChange&&e.onFilterChange(n.value)},placeholder:t.filterPlaceholder,value:n,type:"search"}))}function d({grouped:e,identify:o,item:r,onItemMouseEnter:s,onItemMouseLeave:a,onItemSelect:c,renderIcon:m,selectedItem:d}){const f=u(r,o),g=f===u(d,o);return i("calcite-list-item",{"aria-level":e?"2":"",class:t(l.item,g?l.itemSelected:""),"data-item":r,key:f,label:r.label??void 0,selected:g,tabIndex:0,onCalciteListItemSelect:e=>c?.(I(e)),onmouseenter:e=>s?.(I(e)),onkeydown:e=>n(e.key)&&c?.(I(e)),onmouseleave:e=>a?.(I(e))},i("div",{class:l.itemIcon,slot:"content-start"},m?.({item:r})))}function u(e,t){return e?`${t?.(e)||e.id}__${e.label}`:""}function I(e){return e.currentTarget["data-item"]}function f(t){const{group:n,headingLevel:o=r,...s}=t;return i("div",{class:l.group,key:n.label??void 0},i(e,{level:o,class:l.groupHeader},n.label),n.items.map((e=>d({...s,item:e,grouped:!0}))))}export{s as ItemList,f as renderGroup,d as renderItem};