@webority/ui-react 0.107.0 → 0.108.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/dist/canvas-kit/kit.js +26159 -26822
  2. package/dist/canvas-kit/manifest.json +1130 -1695
  3. package/dist/canvas-kit/release.json +6 -6
  4. package/dist/components/AppAccordion.js +1 -1
  5. package/dist/components/AppActionIcon.js +1 -1
  6. package/dist/components/AppAlert.js +1 -1
  7. package/dist/components/AppAsyncBlock.js +1 -1
  8. package/dist/components/AppAutocomplete.js +1 -1
  9. package/dist/components/AppAvatar.js +1 -1
  10. package/dist/components/AppAvatarGroup.js +1 -1
  11. package/dist/components/AppBadge.js +1 -1
  12. package/dist/components/AppBanner.js +1 -1
  13. package/dist/components/AppBreadcrumbs.js +1 -1
  14. package/dist/components/AppButton.js +1 -1
  15. package/dist/components/AppButtonGroup.js +1 -1
  16. package/dist/components/AppCalendar.js +1 -1
  17. package/dist/components/AppCard.js +1 -1
  18. package/dist/components/AppCarousel.js +1 -1
  19. package/dist/components/AppChart.js +1 -1
  20. package/dist/components/AppChartCard.js +1 -1
  21. package/dist/components/AppCheckbox.js +1 -1
  22. package/dist/components/AppChip.js +1 -1
  23. package/dist/components/AppChipGroup.js +1 -1
  24. package/dist/components/AppChoiceCard.js +1 -1
  25. package/dist/components/AppChoiceChip.js +1 -1
  26. package/dist/components/AppCodeBlock.js +1 -1
  27. package/dist/components/AppColorField.js +1 -1
  28. package/dist/components/AppColumnMenu.js +1 -1
  29. package/dist/components/AppCommandPalette.js +1 -1
  30. package/dist/components/AppCommentThread.js +1 -1
  31. package/dist/components/AppCompareTable.js +1 -1
  32. package/dist/components/AppConfirmDialog.js +1 -1
  33. package/dist/components/AppConsentBanner.js +1 -1
  34. package/dist/components/AppContextMenu.js +1 -1
  35. package/dist/components/AppCopyButton.js +1 -1
  36. package/dist/components/AppCountryFlag.js +1 -1
  37. package/dist/components/AppCountrySelect.js +1 -1
  38. package/dist/components/AppDashboardCell.js +1 -1
  39. package/dist/components/AppDashboardGrid.js +1 -1
  40. package/dist/components/AppDataTable.js +1 -1
  41. package/dist/components/AppDatePicker.js +1 -1
  42. package/dist/components/AppDateRangePicker.js +1 -1
  43. package/dist/components/AppDescriptions.js +1 -1
  44. package/dist/components/AppDetailPane.js +1 -1
  45. package/dist/components/AppDrawer.js +1 -1
  46. package/dist/components/AppDropZone.js +1 -1
  47. package/dist/components/AppDropdown.js +1 -1
  48. package/dist/components/AppDueDate.js +1 -1
  49. package/dist/components/AppEmptyState.js +1 -1
  50. package/dist/components/AppErrorSummary.js +1 -1
  51. package/dist/components/AppFileAttachment.js +1 -1
  52. package/dist/components/AppFilePicker.js +1 -1
  53. package/dist/components/AppFileTiles.js +1 -1
  54. package/dist/components/AppFileViewer.js +1 -1
  55. package/dist/components/AppFilterBar.js +1 -1
  56. package/dist/components/AppFloatingDock.js +1 -1
  57. package/dist/components/AppFormActions.js +1 -1
  58. package/dist/components/AppFormRow.js +1 -1
  59. package/dist/components/AppFormSection.js +1 -1
  60. package/dist/components/AppHoverCard.js +1 -1
  61. package/dist/components/AppIcon.js +1 -1
  62. package/dist/components/AppImagePicker.js +1 -0
  63. package/dist/components/AppInfoTip.js +1 -1
  64. package/dist/components/AppInlineEdit.js +1 -1
  65. package/dist/components/AppInput.js +1 -1
  66. package/dist/components/AppInputGroup.js +1 -1
  67. package/dist/components/AppKanban.js +1 -1
  68. package/dist/components/AppKbd.js +1 -1
  69. package/dist/components/AppKpiTile.js +1 -1
  70. package/dist/components/AppLightbox.js +1 -1
  71. package/dist/components/AppLink.js +1 -1
  72. package/dist/components/AppMarkdown.js +1 -1
  73. package/dist/components/AppMentionInput.js +1 -1
  74. package/dist/components/AppMeter.js +1 -1
  75. package/dist/components/AppMetricStrip.js +1 -1
  76. package/dist/components/AppModal.js +1 -1
  77. package/dist/components/AppMultiSelect.js +1 -1
  78. package/dist/components/AppNavList.js +1 -1
  79. package/dist/components/AppNavigationMenu.js +1 -1
  80. package/dist/components/AppNotificationCenter.js +1 -1
  81. package/dist/components/AppNumberInput.js +1 -1
  82. package/dist/components/AppOnboardingChecklist.js +1 -1
  83. package/dist/components/AppOtpInput.js +1 -1
  84. package/dist/components/AppPageHeader.js +1 -1
  85. package/dist/components/AppPhoneNumberInput.js +1 -1
  86. package/dist/components/AppPricingCard.js +1 -1
  87. package/dist/components/AppProgress.js +1 -1
  88. package/dist/components/AppQrCode.js +1 -1
  89. package/dist/components/AppRadio.js +1 -1
  90. package/dist/components/AppRadioGroup.js +1 -1
  91. package/dist/components/AppRating.js +1 -1
  92. package/dist/components/AppRecordPager.js +1 -1
  93. package/dist/components/AppRelativeTime.js +1 -1
  94. package/dist/components/AppRepeater.js +1 -1
  95. package/dist/components/AppResizable.js +1 -1
  96. package/dist/components/AppResizableHandle.js +1 -1
  97. package/dist/components/AppResizablePanel.js +1 -1
  98. package/dist/components/AppResourceCard.js +1 -1
  99. package/dist/components/AppResult.js +1 -1
  100. package/dist/components/AppRichText.js +1 -1
  101. package/dist/components/AppRollingNumber.js +1 -1
  102. package/dist/components/AppRouteError.js +1 -1
  103. package/dist/components/AppScrollbar.js +1 -1
  104. package/dist/components/AppSearch.js +1 -1
  105. package/dist/components/AppSectionCallToAction.js +1 -1
  106. package/dist/components/AppSectionFaq.js +1 -1
  107. package/dist/components/AppSectionFeatures.js +1 -1
  108. package/dist/components/AppSectionHero.js +1 -1
  109. package/dist/components/AppSectionLeadCapture.js +1 -0
  110. package/dist/components/AppSectionLogos.js +1 -1
  111. package/dist/components/AppSectionPricing.js +1 -1
  112. package/dist/components/AppSectionTestimonials.js +1 -1
  113. package/dist/components/AppSegmented.js +1 -1
  114. package/dist/components/AppSelect.js +1 -1
  115. package/dist/components/AppSeoHead.js +1 -0
  116. package/dist/components/AppShell.js +1 -1
  117. package/dist/components/AppShortcutLegend.js +1 -1
  118. package/dist/components/AppShowMore.js +1 -1
  119. package/dist/components/AppSkeleton.js +1 -1
  120. package/dist/components/AppSkeletonLines.js +1 -1
  121. package/dist/components/AppSlider.js +1 -1
  122. package/dist/components/AppSortableList.js +1 -1
  123. package/dist/components/AppSparkline.js +1 -1
  124. package/dist/components/AppSpinner.js +1 -1
  125. package/dist/components/AppSplash.js +1 -1
  126. package/dist/components/AppSplitButton.js +1 -1
  127. package/dist/components/AppSplitView.js +1 -1
  128. package/dist/components/AppStatusBadge.js +1 -1
  129. package/dist/components/AppStepper.js +1 -1
  130. package/dist/components/AppSwitch.js +1 -1
  131. package/dist/components/AppTablePagination.js +1 -1
  132. package/dist/components/AppTableToolbar.js +1 -1
  133. package/dist/components/AppTabs.js +1 -1
  134. package/dist/components/AppTagInput.js +1 -1
  135. package/dist/components/AppTextarea.js +1 -1
  136. package/dist/components/AppThemeToggle.js +1 -1
  137. package/dist/components/AppTimePicker.js +1 -1
  138. package/dist/components/AppTimeline.js +1 -1
  139. package/dist/components/AppToast.js +1 -1
  140. package/dist/components/AppToolbar.js +1 -1
  141. package/dist/components/AppTooltip.js +1 -1
  142. package/dist/components/AppTour.js +1 -1
  143. package/dist/components/AppTreeView.js +1 -1
  144. package/dist/components/AppTruncate.js +1 -1
  145. package/dist/components/AppUpdateBar.js +1 -1
  146. package/dist/components/AppWhatsNew.js +1 -1
  147. package/dist/components/AppWizard.js +1 -1
  148. package/dist/components/AppWorkspaceSwitcher.js +1 -1
  149. package/dist/components/iconCatalogNames.g.js +1 -1
  150. package/dist/components/iconGlyphs.g.js +1 -1
  151. package/dist/components/iconVariants.g.js +1 -1
  152. package/dist/guidance.json +119 -600
  153. package/dist/lib/useCommandPaletteShortcut.js +1 -1
  154. package/dist/lib/useFileDrop.js +1 -0
  155. package/dist/lib/wuiMarker.js +1 -1
  156. package/dist/types/components/AppAccordion.d.ts +1 -1
  157. package/dist/types/components/AppCompareTable.d.ts +45 -10
  158. package/dist/types/components/AppDescriptions.d.ts +10 -8
  159. package/dist/types/components/AppDrawer.d.ts +37 -0
  160. package/dist/types/components/AppEmptyState.d.ts +12 -5
  161. package/dist/types/components/AppImagePicker.d.ts +149 -0
  162. package/dist/types/components/AppInlineEdit.d.ts +0 -1
  163. package/dist/types/components/AppNavigationMenu.d.ts +1 -1
  164. package/dist/types/components/AppNotificationCenter.d.ts +16 -1
  165. package/dist/types/components/AppRecordPager.d.ts +2 -2
  166. package/dist/types/components/AppSectionLeadCapture.d.ts +67 -0
  167. package/dist/types/components/AppSelect.d.ts +7 -0
  168. package/dist/types/components/AppSeoHead.d.ts +42 -0
  169. package/dist/types/components/AppShortcutLegend.d.ts +13 -1
  170. package/dist/types/components/AppStepper.d.ts +2 -2
  171. package/dist/types/components/AppTablePagination.d.ts +36 -11
  172. package/dist/types/components/AppWhatsNew.d.ts +11 -2
  173. package/dist/types/components/iconGlyphs.g.d.ts +1 -0
  174. package/dist/types/components/iconVariants.g.d.ts +5 -0
  175. package/dist/types/index.d.ts +3 -8
  176. package/dist/types/lib/useFileDrop.d.ts +24 -0
  177. package/dist/types/lib/wuiMarker.d.ts +10 -0
  178. package/dist/ui-react.js +1 -1
  179. package/package.json +5 -5
  180. package/dist/components/AppAvatarPicker.js +0 -1
  181. package/dist/components/AppInfoList.js +0 -1
  182. package/dist/components/AppLogoPicker.js +0 -1
  183. package/dist/components/AppMenubar.js +0 -1
  184. package/dist/components/AppPagination.js +0 -1
  185. package/dist/components/AppSelectMini.js +0 -1
  186. package/dist/components/AppSidebarMenu.js +0 -1
  187. package/dist/components/AppTableEmptyState.js +0 -1
  188. package/dist/types/components/AppAvatarPicker.d.ts +0 -92
  189. package/dist/types/components/AppInfoList.d.ts +0 -29
  190. package/dist/types/components/AppLogoPicker.d.ts +0 -125
  191. package/dist/types/components/AppMenubar.d.ts +0 -50
  192. package/dist/types/components/AppPagination.d.ts +0 -39
  193. package/dist/types/components/AppSelectMini.d.ts +0 -53
  194. package/dist/types/components/AppSidebarMenu.d.ts +0 -90
  195. package/dist/types/components/AppTableEmptyState.d.ts +0 -22
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"../lib/FieldMessage.js";import i from"./AppInfoTip.js";import a from"./AppRequiredMark.js";import o from"./useWuiControl.js";import{cloneElement as s,forwardRef as c,useId as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/country-select";var f=[`sm`,`md`,`lg`],p=[`off`,`border`],m=c(function(c,m){let{value:h,onChange:g,countries:_,placeholder:v=`Select country`,searchPlaceholder:y=`Search countries...`,searchable:b=!0,clearable:x=!1,size:S=`md`,floatingLabel:C=`off`,disabled:w,open:T,label:E,required:D=!1,error:O,hint:k,help:A,helpLabel:j=`More information`,id:M,name:N,className:P=``,fieldClassName:F=``,"aria-label":I,"aria-labelledby":L,"aria-describedby":R,"data-canvas":z,...B}=c;n(`AppCountrySelect`,B),t(`AppCountrySelect`,`size`,S,f),t(`AppCountrySelect`,`floatingLabel`,C,p);let V=l(),{setRef:H}=o({ref:m,value:h??``,onChange:g}),U=M||V,W=C!==`off`&&E,G=O&&U?`${U}-error`:void 0,K=k&&U?`${U}-hint`:void 0,q=u(`wui-country-select`,{"aria-label":I||(typeof E==`string`?E:void 0),"aria-labelledby":L||void 0,"aria-describedby":G||K||R||void 0,"aria-invalid":O?`true`:void 0,ref:H,id:U,name:N,countries:Array.isArray(_)?_.join(`,`):void 0,placeholder:W?` `:v,"search-placeholder":y,searchable:b?``:void 0,clearable:x?``:void 0,size:S===`sm`||S===`lg`?S:void 0,disabled:w?``:void 0,open:T?``:void 0,required:D?``:void 0,className:P||void 0,...B});if(!E&&!O&&!k)return s(q,e(`AppCountrySelect`,c));let J=[`field`,F].filter(Boolean).join(` `);return d(`div`,{...e(`AppCountrySelect`,c),className:J,children:[E&&!W&&d(`label`,{className:`label`,htmlFor:U,children:[E,D&&u(a,{}),A&&u(i,{label:j,children:A})]}),W?d(`div`,{className:`field-float`,children:[q,d(`label`,{className:`float-label`,htmlFor:U,children:[E,D&&u(a,{})]})]}):q,u(r,{error:O,hint:k,errorId:G,hintId:K})]})});export{m as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"../lib/FieldMessage.js";import i from"./AppInfoTip.js";import a from"./AppRequiredMark.js";import o from"./useWuiControl.js";import{cloneElement as s,forwardRef as c,useId as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/country-select";var f=[`sm`,`md`,`lg`],p=[`off`,`border`],m=c(function(c,m){let{marker:h,props:g}=e(`AppCountrySelect`,c),{value:_,onChange:v,countries:y,placeholder:b=`Select country`,searchPlaceholder:x=`Search countries...`,searchable:S=!0,clearable:C=!1,size:w=`md`,floatingLabel:T=`off`,disabled:E,open:D,label:O,required:k=!1,error:A,hint:j,help:M,helpLabel:N=`More information`,id:P,name:F,className:I=``,fieldClassName:L=``,"aria-label":R,"aria-labelledby":z,"aria-describedby":B,...V}=g;n(`AppCountrySelect`,V),t(`AppCountrySelect`,`size`,w,f),t(`AppCountrySelect`,`floatingLabel`,T,p);let H=l(),{setRef:U}=o({ref:m,value:_??``,onChange:v}),W=P||H,G=T!==`off`&&O,K=A&&W?`${W}-error`:void 0,q=j&&W?`${W}-hint`:void 0,J=u(`wui-country-select`,{"aria-label":R||(typeof O==`string`?O:void 0),"aria-labelledby":z||void 0,"aria-describedby":K||q||B||void 0,"aria-invalid":A?`true`:void 0,ref:U,id:W,name:F,countries:Array.isArray(y)?y.join(`,`):void 0,placeholder:G?` `:b,"search-placeholder":x,searchable:S?``:void 0,clearable:C?``:void 0,size:w===`sm`||w===`lg`?w:void 0,disabled:E?``:void 0,open:D?``:void 0,required:k?``:void 0,className:I||void 0,...V});if(!O&&!A&&!j)return s(J,h);let Y=[`field`,L].filter(Boolean).join(` `);return d(`div`,{...h,className:Y,children:[O&&!G&&d(`label`,{className:`label`,htmlFor:W,children:[O,k&&u(a,{}),M&&u(i,{label:N,children:M})]}),G?d(`div`,{className:`field-float`,children:[J,d(`label`,{className:`float-label`,htmlFor:W,children:[O,k&&u(a,{})]})]}):J,u(r,{error:A,hint:j,errorId:K,hintId:q})]})});export{m as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{jsx as r}from"react/jsx-runtime";var i=[3,4,6,12];function a(a){let{span:o=12,children:s,className:c=``,...l}=a;return n(`AppDashboardCell`,l),t(`AppDashboardCell`,`span`,o,i),r(`div`,{className:`wui-dashboard-cell${o===12||!i.includes(o)?``:` wui-dashboard-cell-${o}`}${c?` ${c}`:``}`,...e(`AppDashboardCell`,a),...l,children:s})}export{a as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{jsx as r}from"react/jsx-runtime";var i=[3,4,6,12];function a(a){let{marker:o,props:s}=e(`AppDashboardCell`,a),{span:c=12,children:l,className:u=``,...d}=s;return n(`AppDashboardCell`,d),t(`AppDashboardCell`,`span`,c,i),r(`div`,{className:`wui-dashboard-cell${c===12||!i.includes(c)?``:` wui-dashboard-cell-${c}`}${u?` ${u}`:``}`,...o,...d,children:l})}export{a as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import{jsx as n}from"react/jsx-runtime";function r(r){let{children:i,className:a=``,...o}=r;return t(`AppDashboardGrid`,o),n(`div`,{className:`wui-dashboard-grid${a?` ${a}`:``}`,...e(`AppDashboardGrid`,r),...o,children:i})}export{r as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import{jsx as n}from"react/jsx-runtime";function r(r){let{marker:i,props:a}=e(`AppDashboardGrid`,r),{children:o,className:s=``,...c}=a;return t(`AppDashboardGrid`,c),n(`div`,{className:`wui-dashboard-grid${s?` ${s}`:``}`,...i,...c,children:o})}export{r as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import i from"./AppIcon.js";import{AppSkeletonRows as a}from"./AppSkeleton.js";import o from"./AppTablePagination.js";import{attachRowDrag as s,attachScrollEdges as c,syncTargets as ee}from"@webority/ui-elements/helpers";import{Children as l,Fragment as te,useEffect as u,useLayoutEffect as d,useMemo as f,useRef as p,useState as m}from"react";import{Fragment as ne,jsx as h,jsxs as g}from"react/jsx-runtime";import{FORCED_STATE_CLASSES as re}from"@webority/theme/runtime";import{COLUMN_MAX_WIDTH as ie,COLUMN_MIN_WIDTH as ae,DATA_TABLE_TEXT as oe,PIN_AT_VAR as se,PIN_SIDES as ce,ROW_HEIGHTS as le,ROW_MOVE_LIMIT as ue,ROW_SAVE_ERROR_CLASS as de,groupCount as fe,groupItems as pe,measureRows as me,pinAtValue as he,pinClasses as ge,planPins as _e,playRowMoves as ve,rowOrderChanged as ye,saveOutcomeText as be,settledRows as xe,virtualRange as Se}from"@webority/ui-elements/elements/data-table";var Ce=[`comfortable`,`cozy`,`compact`],we=[`auto`,`fixed`],_=()=>{try{return process.env.NODE_ENV!==`production`}catch{return!0}},v=new Set;function y(e,n){v.has(e)||!_()||(v.add(e),t(`[@webority/ui-react] <AppDataTable> ${n}`))}var Te=100,Ee=e=>e.id,De=(e,t,n)=>{let r=!!t?.(e),i=r?``:n?.(e)||``;return{state:r?`saving`:i?`error`:null,message:i}};function Oe(e){return e===`end`?`wui-cell-end`:e===`num`?`num`:e===`center`?`text-center`:``}function ke(e){return e==null||e===``?`-`:Array.isArray(e)?l.toArray(e):typeof e==`boolean`?String(e):e}function Ae(e){if(!e||!(e.total>0))return!1;let t=e.pageSizes?.length?e.pageSizes:[e.pageSize];return e.total>Math.min(...t)}function b(t){let{columns:l,rows:_,rowKey:v=Ee,sort:b,onSort:je,loading:x=!1,skeletonRows:Me=5,empty:Ne=`No records found.`,emptyFiltered:Pe,sourceCount:Fe,rowActions:S,rowActionsLabel:Ie,pagination:C,ariaLabel:Le,className:Re=``,wrapperClassName:ze=``,selectable:w=!1,selectedIds:T,isRowSelectable:Be,onToggleRow:Ve,onToggleAll:He,onSelectRange:Ue,renderExpanded:We,density:E=`comfortable`,tableLayout:Ge=`auto`,striped:Ke=!1,flush:qe=!1,pad:Je,headerTone:Ye,rowDrag:D=!1,maxHeight:O,stickyFirstColumn:Xe=!1,stickyActions:Ze=!1,stackOnMobile:k=!1,hiddenColumns:Qe,rowStatus:$e,rowHref:A,onRowClick:et,activeRowKey:tt,hoverRowKey:nt,resizableColumns:j=!1,viewKey:rt,groupBy:M,groupLabel:it,virtual:N=!1,rowSaving:P,rowSaveError:F,...at}=t;r(`AppDataTable`,at);let{style:ot,...st}=at,ct=Qe?.length?new Set(Qe):null;l=ct?l.filter(e=>!(e.hideable&&ct.has(e.key))):l,n(`AppDataTable`,`density`,E,Ce),n(`AppDataTable`,`tableLayout`,Ge,we);for(let e of l)n(`AppDataTable`,`column.pin`,e.pin,ce);let lt=[`table table-ledger`,E===`cozy`||E===`compact`?`wui-table-${E}`:``,Ke?`wui-table-striped`:``,Xe?`wui-table-sticky-first`:``,Ze?`wui-table-sticky-actions`:``,k?`wui-table-stack`:``,Re].filter(Boolean).join(` `),I=typeof We==`function`,[ut,dt]=m(()=>new Set),ft=e=>dt(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),pt=l.some(e=>typeof e.footer==`function`),L=typeof A==`function`||typeof et==`function`,mt=e=>!!e.target.closest(`a, button, input, select, textarea, label, [role='menu'], [role='menuitem'], .dropdown`),ht=(e,t)=>{if(mt(t)||(et&&et(e),!A))return;let n=A(e);n&&(t.ctrlKey||t.metaKey||t.button===1?window.open(n,`_blank`,`noopener`):window.location.assign(n))},R=O!==void 0,gt=[`table-wrap`,R?`wui-table-scroll`:``,qe?`wui-table-flush`:``,ze].filter(Boolean).join(` `),_t={maxHeight:R?O:void 0,"--wui-table-pad":Je!=null&&!qe?`${Je}px`:void 0,"--wui-table-header-bg":Ye??void 0},vt=Object.values(_t).some(e=>e!==void 0)||ot!==void 0?{..._t,...ot}:void 0,z=Math.max(1,l.length+ +!!S+ +!!w+ +!!I),yt=l.some(e=>e.pin===`start`||e.pin===`end`),B=yt||j||!!M||N,V=+!!I+ +!!w,bt=yt?_e([...I?[`lead`]:[],...w?[`lead`]:[],...l.map(e=>e.pin===`start`||e.pin===`end`?e.pin:null),...S?[null]:[]]):[],H=(e,t=``)=>{let n=bt[e];return n?{className:`${t.trim()} ${ge(n)}`.trim(),style:{[se]:he(n.side,n.ordinal)}}:{className:t,style:void 0}},xt=(e,t)=>bt[e]?{...t,...H(e).style}:t,St=l.length-1+ +!!S;rt&&!j&&y(`view-key`,"`viewKey` remembers resized widths: add `resizableColumns`."),N&&!R&&y(`virtual-height`,"`virtual` needs `maxHeight`: without a scroll box every row renders."),N&&(I||k)&&y(`virtual-shape`,"`virtual` takes rows of one height, so it is off with `renderExpanded` or `stackOnMobile`."),!N&&_?.length>500&&y(`rows-without-virtual`,`renders more than 500 rows without virtual: add virtual with maxHeight, or page the data.`);let U=N&&R&&!I&&!k&&!x&&_?.length>0,W=(e,t)=>!Be||!!Be(e,t),Ct=w&&_?_.reduce((e,t,n)=>e+ +!!W(t,n),0):0,G=w&&_?_.reduce((e,t,n)=>e+(W(t,n)&&T?.has(v(t,n))?1:0),0):0,wt=Ct>0&&G===Ct,Tt=G>0&&!wt,Et=e=>{e&&(e.indeterminate=Tt)},Dt=p(null),Ot=(e,t)=>{let n=Dt.current;Dt.current=e;let r=t&&n!==null?_.findIndex((e,t)=>v(e,t)===n):-1,i=_.findIndex((t,n)=>v(t,n)===e);if(r<0||i<0||r===i){Ve?.(e);return}let a=!T?.has(e),o=Math.min(r,i),s=_.slice(o,Math.max(r,i)+1).map((e,t)=>[e,o+t]).filter(([e,t])=>W(e,t)).map(([e,t])=>v(e,t)).filter(e=>(T?.has(e)||!1)!==a);if(Ue)Ue(s,a);else for(let e of s)Ve?.(e)},kt=e=>{if(!Be){He?.(e);return}(_||[]).forEach((t,n)=>{let r=v(t,n);W(t,n)&&(T?.has(r)||!1)!==e&&Ve?.(r)})},[At,jt]=m(()=>new Set),Mt=e=>jt(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),K=f(()=>{let e=(_||[]).map((e,t)=>({row:e,i:t}));return M?pe(e,({row:e})=>String(e[M]??``)).flatMap(e=>[{group:e,open:!At.has(e.key)},...At.has(e.key)?[]:e.items]):e},[_,M,At]),q=p(null),J=p(null);u(()=>{let e=q.current;if(!e)return;let t=e=>{let t=e.target.closest?.(`.u-name`);t&&!t.title&&(t.scrollWidth>t.clientWidth||t.scrollHeight>t.clientHeight)&&(t.title=t.textContent.trim())},n=e=>{let t=e.target.closest?.(`tbody > tr[aria-rowindex]`)?.getAttribute(`aria-rowindex`);J.current=t?Number(t)-2:null},r=t=>{e.contains(t.relatedTarget)||(J.current=null)};e.addEventListener(`mouseover`,t),e.addEventListener(`focusin`,t),e.addEventListener(`focusin`,n),e.addEventListener(`focusout`,r);let i=c(e);return()=>{e.removeEventListener(`mouseover`,t),e.removeEventListener(`focusin`,t),e.removeEventListener(`focusin`,n),e.removeEventListener(`focusout`,r),i()}},[B]),u(()=>{if(!D||!q.current)return;let e=s(q.current);return ee(document),e},[D,B]);let Nt=p(!1);u(()=>{!Nt.current&&(Nt.current=!0,G===0)||q.current?.querySelector(`table`)?.dispatchEvent(new CustomEvent(`selectionchange`,{bubbles:!0,detail:{selected:G,total:_?.length??0,keys:_?_.flatMap((e,t)=>{let n=v(e,t);return W(e,t)&&T?.has(n)?[String(n)]:[]}):[]}}))},[w,G]);let[Pt,Ft]=m({top:0,height:0}),[Y,It]=m(le[E]??le.comfortable);u(()=>{let e=q.current;if(!U||!e)return;let t=0,n=()=>{t=0;let n=e.querySelector(`:scope > table > thead`)?.getBoundingClientRect().height||0,r={top:Math.max(0,e.scrollTop-n),height:e.clientHeight};Ft(e=>e.top===r.top&&e.height===r.height?e:r)},r=()=>{t||=requestAnimationFrame(n)};e.addEventListener(`scroll`,r,{passive:!0});let i=typeof ResizeObserver<`u`?new ResizeObserver(r):null;return i?.observe(e),n(),()=>{e.removeEventListener(`scroll`,r),i?.disconnect(),t&&cancelAnimationFrame(t)}},[U,B]),d(()=>{if(!U)return;let e=(q.current?.querySelector(`:scope > table > tbody > tr:not(.wui-virtual-spacer, .wui-group-row)`))?.getBoundingClientRect().height;e>0&&Math.abs(e-Y)>.5&&It(e)},[E,_?.length,N,U]);let X={start:0,end:K.length,before:0,after:0};if(U){X=Se({scrollTop:Pt.top,viewport:Pt.height||Number.parseFloat(O)||0,rowHeight:Y,count:K.length});let e=J.current;e!==null&&e>=0&&e<K.length&&(e<X.start&&X.start-e<=Te&&(X={...X,start:e,before:e*Y}),e>=X.end&&e-X.end<Te&&(X={...X,end:e+1,after:(K.length-e-1)*Y}))}let Lt=p(null),Rt=p(null),zt=p(null),Bt=!N&&!x&&_?.length>0&&_.length<=ue;d(()=>{let e=Lt.current;if(!Bt||!e){Rt.current=null,zt.current=null;return}let t=_.map((e,t)=>v(e,t));ye(zt.current,t)&&ve(e.rows,Rt.current),Rt.current=me(e.rows),zt.current=t});let Vt=typeof P==`function`||typeof F==`function`,Ht=p(null),Ut=p(null);u(()=>{if(!Vt){Ut.current=null;return}let e=l[0]?.key,t=new Map;(_||[]).forEach((n,r)=>{let i=e===void 0?void 0:n[e],a=typeof i==`string`||typeof i==`number`?String(i):``;t.set(v(n,r),{...De(n,P,F),label:a})});let n=be(xe(Ut.current,t));Ut.current=t,n&&Ht.current&&(Ht.current.textContent=n)},[_,P,F,v]);let Z=Pe!==void 0&&(Fe===void 0||Fe>0)?Pe:Ne,Wt=({group:e,open:t},n)=>{let r=e.items[0].row[M],a=e.items.map(e=>e.row);return h(`tr`,{className:`wui-group-row`,"data-group-key":e.key,"aria-rowindex":U?n+2:void 0,children:h(`th`,{className:`wui-group-cell`,scope:`rowgroup`,colSpan:z,children:g(`button`,{type:`button`,className:`wui-group-toggle`,"aria-expanded":t,onClick:()=>Mt(e.key),children:[h(i,{name:`chevron-down`,size:16}),h(`span`,{className:`wui-group-label`,children:it?it(r,a):ke(r)}),h(`span`,{className:`wui-group-count`,"aria-hidden":`true`,children:fe(e.items.length)}),h(`span`,{className:`visually-hidden wui-group-rows`,children:`, ${oe.rows(e.items.length)}`})]})})},`group:${e.key}`)},Gt=({row:e,i:t},n)=>{let r=v(e,t),a=I&&ut.has(r),o=tt!=null&&String(tt)===String(r),s=nt!=null&&String(nt)===String(r),c=String(r).replace(/[^a-z0-9]/gi,`_`),ee=H(0,`wui-expand-cell`),u=H(+!!I,`wui-select-cell`),d=Vt?De(e,P,F):null,f=W(e,t);return g(te,{children:[g(`tr`,{className:[w&&f&&T?.has(r)?`is-selected`:``,L?`wui-row-link`:``,o?`wui-row-active`:``,s?re.hover:``].filter(Boolean).join(` `)||void 0,"aria-current":o?`true`:void 0,"aria-rowindex":U?n+2:void 0,"aria-busy":d?.state===`saving`?`true`:void 0,"data-wui-save-state":d?.state||void 0,"data-status":$e?.(e)||void 0,"data-href":A?.(e)||void 0,"data-row-key":D?String(r):void 0,tabIndex:L?0:void 0,onClick:L?t=>ht(e,t):void 0,onAuxClick:L&&A?t=>t.button===1&&ht(e,t):void 0,onKeyDown:L?t=>{t.key===`Enter`&&t.target===t.currentTarget&&ht(e,t)}:void 0,children:[I&&h(`td`,{className:ee.className,style:ee.style,children:h(`button`,{type:`button`,className:`wui-expand-toggle${a?` is-open`:``}`,"aria-expanded":a,"aria-controls":a?`${c}-expanded`:void 0,"aria-label":a?`Collapse row`:`Expand row`,onClick:()=>ft(r),children:h(i,{name:`chevron-down`,size:16})})}),w&&h(`td`,{className:u.className,style:u.style,children:h(`input`,{type:`checkbox`,className:`wui-check`,checked:f&&(T?.has(r)||!1),disabled:!f,onChange:e=>Ot(r,e.nativeEvent.shiftKey),onMouseDown:e=>{e.shiftKey&&e.preventDefault()},"aria-label":`Select row`})}),l.map((t,n)=>g(`td`,{className:H(V+n,(n===0?`wui-name-cell `:``)+(t.nowrap?`text-nowrap `:``)+Oe(t.align)+(t.cellClassName?` ${t.cellClassName}`:``)).className,style:xt(V+n,t.cellStyle),"data-label":k&&typeof t.label==`string`?t.label:void 0,children:[t.render?t.render(e):ke(e[t.key]),n===0&&d?.state===`error`&&h(`span`,{className:de,children:d.message})]},t.key)),S&&h(`td`,{children:h(`div`,{className:`u-row-actions`,children:S(e)})})]}),a&&h(`tr`,{className:`wui-row-expanded`,children:h(`td`,{id:`${c}-expanded`,colSpan:z,children:We(e)})})]},r)},Kt=(e,t)=>e.group?Wt(e,t):Gt(e,t),qt=(e,t)=>U?h(`tr`,{className:`wui-virtual-spacer`,"aria-hidden":`true`,hidden:t===0,children:h(`td`,{colSpan:z,style:{height:t}})},e):null,Q=H(0,`wui-expand-cell`),$=H(+!!I,`wui-select-cell`);return g(ne,{children:[g(B?`wui-data-table`:`div`,{ref:q,...B?{class:gt,resizable:j?``:void 0,"view-key":rt||void 0,"data-wui-row-drag":D?``:void 0}:{className:gt,"data-wui-row-drag":D?``:void 0},style:vt,tabIndex:0,...e(`AppDataTable`,t),...st,children:[g(`table`,{className:lt,"aria-label":Le,"aria-rowcount":U?K.length+1:void 0,style:Ge===`fixed`?{tableLayout:`fixed`}:void 0,children:[h(`thead`,{children:g(`tr`,{"aria-rowindex":U?1:void 0,children:[I&&h(`th`,{className:Q.className,style:Q.style,children:h(`span`,{className:`visually-hidden`,children:`Expand`})}),w&&h(`th`,{className:$.className,style:$.style,children:h(`input`,{ref:Et,type:`checkbox`,className:`wui-check`,checked:wt,onChange:e=>kt(e.target.checked),"aria-label":`Select all rows`})}),l.map((e,t)=>{let n=!!(e.sortable&&je),r=b&&b.key===e.key,a=e.align===`num`||e.align===`end`,o=n&&h(`span`,{className:`sort-icon${a?` wui-sort-lead`:``}`,children:h(i,{name:`chevrons-up-down`,size:14})}),s=j&&t!==St,c=e.width||e.minWidth?{width:e.width,minWidth:e.minWidth}:void 0;return g(`th`,{className:H(V+t,(n?`sortable `:``)+(t===0?`wui-name-cell `:``)+(e.nowrap?`text-nowrap `:``)+(e.grow?`wui-col-grow `:``)+(s?`wui-col-resizable `:``)+Oe(e.align)).className,style:xt(V+t,c),"data-key":B?e.key:void 0,"aria-label":s&&typeof e.label==`string`?e.label:void 0,"data-pin":e.pin===`start`||e.pin===`end`?e.pin:void 0,tabIndex:n?0:void 0,"aria-sort":r?b.dir===`asc`?`ascending`:`descending`:n?`none`:void 0,onClick:n?()=>je(e.key):void 0,onKeyDown:n?t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),je(e.key))}:void 0,children:[a&&o,e.label,!a&&o,s&&h(`span`,{className:`wui-col-resize`,role:`separator`,"aria-orientation":`vertical`,"aria-valuemin":ae,"aria-valuemax":ie,tabIndex:0,"aria-label":oe.resize(typeof e.label==`string`?e.label:e.key)})]},e.key)}),S&&(Ie?h(`th`,{className:`wui-cell-end`,children:Ie}):h(`th`,{className:`wui-cell-end`,children:h(`span`,{className:`visually-hidden`,children:`Actions`})}))]})}),h(`tbody`,{ref:Lt,children:x?h(a,{rows:Me,cols:z}):_?.length?g(ne,{children:[qt(`before`,X.before),K.slice(X.start,X.end).map((e,t)=>Kt(e,X.start+t)),qt(`after`,X.after)]}):null}),pt&&!x&&_?.length>0&&h(`tfoot`,{children:g(`tr`,{children:[I&&h(`td`,{className:Q.className,style:Q.style}),w&&h(`td`,{className:$.className,style:$.style}),l.map((e,t)=>h(`td`,{className:H(V+t,(t===0?`wui-name-cell `:``)+(e.nowrap?`text-nowrap `:``)+Oe(e.align)).className,style:xt(V+t,void 0),children:e.footer?e.footer(_):null},e.key)),S&&h(`td`,{})]})})]}),!x&&!_?.length&&h(`div`,{className:`tbl-empty-block`,children:typeof Z==`string`?h(`div`,{className:`tbl-empty-plain`,children:Z}):Z})]}),Ae(C)&&h(o,{page:C.page,totalPages:C.totalPages,pageSize:C.pageSize,onPageChange:C.setPage,onPageSizeChange:C.setPageSize,pageSizes:C.pageSizes,mode:C.mode}),Vt&&h(`div`,{ref:Ht,className:`visually-hidden`,role:`status`,"aria-live":`polite`,"data-wui-table-status":``})]})}export{b as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import i from"./AppIcon.js";import{AppSkeletonRows as a}from"./AppSkeleton.js";import o from"./AppTablePagination.js";import{attachRowDrag as s,attachScrollEdges as c,syncTargets as l}from"@webority/ui-elements/helpers";import{Children as u,Fragment as ee,useEffect as d,useLayoutEffect as f,useMemo as te,useRef as p,useState as m}from"react";import{Fragment as ne,jsx as h,jsxs as g}from"react/jsx-runtime";import{FORCED_STATE_CLASSES as re}from"@webority/theme/runtime";import{COLUMN_MAX_WIDTH as ie,COLUMN_MIN_WIDTH as ae,DATA_TABLE_TEXT as oe,PIN_AT_VAR as se,PIN_SIDES as ce,ROW_HEIGHTS as le,ROW_MOVE_LIMIT as ue,ROW_SAVE_ERROR_CLASS as de,groupCount as fe,groupItems as pe,measureRows as me,pinAtValue as he,pinClasses as ge,planPins as _e,playRowMoves as ve,rowOrderChanged as ye,saveOutcomeText as be,settledRows as xe,virtualRange as Se}from"@webority/ui-elements/elements/data-table";var Ce=[`comfortable`,`cozy`,`compact`],we=[`auto`,`fixed`],Te=()=>{try{return process.env.NODE_ENV!==`production`}catch{return!0}},_=new Set;function v(e,n){_.has(e)||!Te()||(_.add(e),t(`[@webority/ui-react] <AppDataTable> ${n}`))}var Ee=100,De=e=>e.id,Oe=(e,t,n)=>{let r=!!t?.(e),i=r?``:n?.(e)||``;return{state:r?`saving`:i?`error`:null,message:i}};function ke(e){return e===`end`?`wui-cell-end`:e===`num`?`num`:e===`center`?`text-center`:``}function Ae(e){return e==null||e===``?`-`:Array.isArray(e)?u.toArray(e):typeof e==`boolean`?String(e):e}function je(e){if(!e||!(e.total>0))return!1;let t=e.pageSizes?.length?e.pageSizes:[e.pageSize];return e.total>Math.min(...t)}function y(t){let{marker:u,props:Te}=e(`AppDataTable`,t),{columns:_,rows:y,rowKey:b=De,sort:Me,onSort:x,loading:S=!1,skeletonRows:Ne=5,empty:Pe=`No records found.`,emptyFiltered:Fe,sourceCount:Ie,rowActions:C,rowActionsLabel:Le,pagination:w,ariaLabel:Re,className:ze=``,wrapperClassName:Be=``,selectable:T=!1,selectedIds:E,isRowSelectable:D,onToggleRow:Ve,onToggleAll:He,onSelectRange:Ue,renderExpanded:We,density:O=`comfortable`,tableLayout:Ge=`auto`,striped:Ke=!1,flush:qe=!1,pad:Je,headerTone:Ye,rowDrag:k=!1,maxHeight:Xe,stickyFirstColumn:Ze=!1,stickyActions:Qe=!1,stackOnMobile:A=!1,hiddenColumns:$e,rowStatus:et,rowHref:j,onRowClick:tt,activeRowKey:nt,hoverRowKey:rt,resizableColumns:M=!1,viewKey:it,groupBy:N,groupLabel:at,virtual:P=!1,rowSaving:F,rowSaveError:I,...ot}=Te;r(`AppDataTable`,ot);let{style:st,...ct}=ot,lt=$e?.length?new Set($e):null;_=lt?_.filter(e=>!(e.hideable&&lt.has(e.key))):_,n(`AppDataTable`,`density`,O,Ce),n(`AppDataTable`,`tableLayout`,Ge,we);for(let e of _)n(`AppDataTable`,`column.pin`,e.pin,ce);let ut=[`table table-ledger`,O===`cozy`||O===`compact`?`wui-table-${O}`:``,Ke?`wui-table-striped`:``,Ze?`wui-table-sticky-first`:``,Qe?`wui-table-sticky-actions`:``,A?`wui-table-stack`:``,ze].filter(Boolean).join(` `),L=typeof We==`function`,[dt,ft]=m(()=>new Set),pt=e=>ft(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),mt=_.some(e=>typeof e.footer==`function`),R=typeof j==`function`||typeof tt==`function`,ht=e=>!!e.target.closest(`a, button, input, select, textarea, label, [role='menu'], [role='menuitem'], .dropdown`),gt=(e,t)=>{if(ht(t)||(tt&&tt(e),!j))return;let n=j(e);n&&(t.ctrlKey||t.metaKey||t.button===1?window.open(n,`_blank`,`noopener`):window.location.assign(n))},z=Xe!==void 0,_t=[`table-wrap`,z?`wui-table-scroll`:``,qe?`wui-table-flush`:``,Be].filter(Boolean).join(` `),vt={maxHeight:z?Xe:void 0,"--wui-table-pad":Je!=null&&!qe?`${Je}px`:void 0,"--wui-table-header-bg":Ye??void 0},yt=Object.values(vt).some(e=>e!==void 0)||st!==void 0?{...vt,...st}:void 0,B=Math.max(1,_.length+ +!!C+ +!!T+ +!!L),bt=_.some(e=>e.pin===`start`||e.pin===`end`),V=bt||M||!!N||P,H=+!!L+ +!!T,xt=bt?_e([...L?[`lead`]:[],...T?[`lead`]:[],..._.map(e=>e.pin===`start`||e.pin===`end`?e.pin:null),...C?[null]:[]]):[],U=(e,t=``)=>{let n=xt[e];return n?{className:`${t.trim()} ${ge(n)}`.trim(),style:{[se]:he(n.side,n.ordinal)}}:{className:t,style:void 0}},St=(e,t)=>xt[e]?{...t,...U(e).style}:t,Ct=_.length-1+ +!!C;it&&!M&&v(`view-key`,"`viewKey` remembers resized widths: add `resizableColumns`."),P&&!z&&v(`virtual-height`,"`virtual` needs `maxHeight`: without a scroll box every row renders."),P&&(L||A)&&v(`virtual-shape`,"`virtual` takes rows of one height, so it is off with `renderExpanded` or `stackOnMobile`."),!P&&y?.length>500&&v(`rows-without-virtual`,`renders more than 500 rows without virtual: add virtual with maxHeight, or page the data.`);let W=P&&z&&!L&&!A&&!S&&y?.length>0,G=(e,t)=>!D||!!D(e,t),wt=T&&y?y.reduce((e,t,n)=>e+ +!!G(t,n),0):0,K=T&&y?y.reduce((e,t,n)=>e+(G(t,n)&&E?.has(b(t,n))?1:0),0):0,Tt=wt>0&&K===wt,Et=K>0&&!Tt,Dt=e=>{e&&(e.indeterminate=Et)},Ot=p(null),kt=(e,t)=>{let n=Ot.current;Ot.current=e;let r=t&&n!==null?y.findIndex((e,t)=>b(e,t)===n):-1,i=y.findIndex((t,n)=>b(t,n)===e);if(r<0||i<0||r===i){Ve?.(e);return}let a=!E?.has(e),o=Math.min(r,i),s=y.slice(o,Math.max(r,i)+1).map((e,t)=>[e,o+t]).filter(([e,t])=>G(e,t)).map(([e,t])=>b(e,t)).filter(e=>(E?.has(e)||!1)!==a);if(Ue)Ue(s,a);else for(let e of s)Ve?.(e)},At=e=>{if(!D){He?.(e);return}(y||[]).forEach((t,n)=>{let r=b(t,n);G(t,n)&&(E?.has(r)||!1)!==e&&Ve?.(r)})},[jt,Mt]=m(()=>new Set),Nt=e=>Mt(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),q=te(()=>{let e=(y||[]).map((e,t)=>({row:e,i:t}));return N?pe(e,({row:e})=>String(e[N]??``)).flatMap(e=>[{group:e,open:!jt.has(e.key)},...jt.has(e.key)?[]:e.items]):e},[y,N,jt]),J=p(null),Pt=p(null);d(()=>{let e=J.current;if(!e)return;let t=e=>{let t=e.target.closest?.(`.u-name`);t&&!t.title&&(t.scrollWidth>t.clientWidth||t.scrollHeight>t.clientHeight)&&(t.title=t.textContent.trim())},n=e=>{let t=e.target.closest?.(`tbody > tr[aria-rowindex]`)?.getAttribute(`aria-rowindex`);Pt.current=t?Number(t)-2:null},r=t=>{e.contains(t.relatedTarget)||(Pt.current=null)};e.addEventListener(`mouseover`,t),e.addEventListener(`focusin`,t),e.addEventListener(`focusin`,n),e.addEventListener(`focusout`,r);let i=c(e);return()=>{e.removeEventListener(`mouseover`,t),e.removeEventListener(`focusin`,t),e.removeEventListener(`focusin`,n),e.removeEventListener(`focusout`,r),i()}},[V]),d(()=>{if(!k||!J.current)return;let e=s(J.current);return l(document),e},[k,V]);let Ft=p(!1);d(()=>{!Ft.current&&(Ft.current=!0,K===0)||J.current?.querySelector(`table`)?.dispatchEvent(new CustomEvent(`selectionchange`,{bubbles:!0,detail:{selected:K,total:y?.length??0,keys:y?y.flatMap((e,t)=>{let n=b(e,t);return G(e,t)&&E?.has(n)?[String(n)]:[]}):[]}}))},[T,K]);let[It,Lt]=m({top:0,height:0}),[Y,Rt]=m(le[O]??le.comfortable);d(()=>{let e=J.current;if(!W||!e)return;let t=0,n=()=>{t=0;let n=e.querySelector(`:scope > table > thead`)?.getBoundingClientRect().height||0,r={top:Math.max(0,e.scrollTop-n),height:e.clientHeight};Lt(e=>e.top===r.top&&e.height===r.height?e:r)},r=()=>{t||=requestAnimationFrame(n)};e.addEventListener(`scroll`,r,{passive:!0});let i=typeof ResizeObserver<`u`?new ResizeObserver(r):null;return i?.observe(e),n(),()=>{e.removeEventListener(`scroll`,r),i?.disconnect(),t&&cancelAnimationFrame(t)}},[W,V]),f(()=>{if(!W)return;let e=(J.current?.querySelector(`:scope > table > tbody > tr:not(.wui-virtual-spacer, .wui-group-row)`))?.getBoundingClientRect().height;e>0&&Math.abs(e-Y)>.5&&Rt(e)},[O,y?.length,P,W]);let X={start:0,end:q.length,before:0,after:0};if(W){X=Se({scrollTop:It.top,viewport:It.height||Number.parseFloat(Xe)||0,rowHeight:Y,count:q.length});let e=Pt.current;e!==null&&e>=0&&e<q.length&&(e<X.start&&X.start-e<=Ee&&(X={...X,start:e,before:e*Y}),e>=X.end&&e-X.end<Ee&&(X={...X,end:e+1,after:(q.length-e-1)*Y}))}let zt=p(null),Bt=p(null),Vt=p(null),Ht=!P&&!S&&y?.length>0&&y.length<=ue;f(()=>{let e=zt.current;if(!Ht||!e){Bt.current=null,Vt.current=null;return}let t=y.map((e,t)=>b(e,t));ye(Vt.current,t)&&ve(e.rows,Bt.current),Bt.current=me(e.rows),Vt.current=t});let Ut=typeof F==`function`||typeof I==`function`,Z=p(null),Wt=p(null);d(()=>{if(!Ut){Wt.current=null;return}let e=_[0]?.key,t=new Map;(y||[]).forEach((n,r)=>{let i=e===void 0?void 0:n[e],a=typeof i==`string`||typeof i==`number`?String(i):``;t.set(b(n,r),{...Oe(n,F,I),label:a})});let n=be(xe(Wt.current,t));Wt.current=t,n&&Z.current&&(Z.current.textContent=n)},[y,F,I,b]);let Gt=Fe!==void 0&&(Ie===void 0||Ie>0)?Fe:Pe,Kt=({group:e,open:t},n)=>{let r=e.items[0].row[N],a=e.items.map(e=>e.row);return h(`tr`,{className:`wui-group-row`,"data-group-key":e.key,"aria-rowindex":W?n+2:void 0,children:h(`th`,{className:`wui-group-cell`,scope:`rowgroup`,colSpan:B,children:g(`button`,{type:`button`,className:`wui-group-toggle`,"aria-expanded":t,onClick:()=>Nt(e.key),children:[h(i,{name:`chevron-down`,size:16}),h(`span`,{className:`wui-group-label`,children:at?at(r,a):Ae(r)}),h(`span`,{className:`wui-group-count`,"aria-hidden":`true`,children:fe(e.items.length)}),h(`span`,{className:`visually-hidden wui-group-rows`,children:`, ${oe.rows(e.items.length)}`})]})})},`group:${e.key}`)},qt=({row:e,i:t},n)=>{let r=b(e,t),a=L&&dt.has(r),o=nt!=null&&String(nt)===String(r),s=rt!=null&&String(rt)===String(r),c=String(r).replace(/[^a-z0-9]/gi,`_`),l=U(0,`wui-expand-cell`),u=U(+!!L,`wui-select-cell`),d=Ut?Oe(e,F,I):null,f=G(e,t);return g(ee,{children:[g(`tr`,{className:[T&&f&&E?.has(r)?`is-selected`:``,R?`wui-row-link`:``,o?`wui-row-active`:``,s?re.hover:``].filter(Boolean).join(` `)||void 0,"aria-current":o?`true`:void 0,"aria-rowindex":W?n+2:void 0,"aria-busy":d?.state===`saving`?`true`:void 0,"data-wui-save-state":d?.state||void 0,"data-status":et?.(e)||void 0,"data-href":j?.(e)||void 0,"data-row-key":k?String(r):void 0,tabIndex:R?0:void 0,onClick:R?t=>gt(e,t):void 0,onAuxClick:R&&j?t=>t.button===1&&gt(e,t):void 0,onKeyDown:R?t=>{t.key===`Enter`&&t.target===t.currentTarget&&gt(e,t)}:void 0,children:[L&&h(`td`,{className:l.className,style:l.style,children:h(`button`,{type:`button`,className:`wui-expand-toggle${a?` is-open`:``}`,"aria-expanded":a,"aria-controls":a?`${c}-expanded`:void 0,"aria-label":a?`Collapse row`:`Expand row`,onClick:()=>pt(r),children:h(i,{name:`chevron-down`,size:16})})}),T&&h(`td`,{className:u.className,style:u.style,children:h(`input`,{type:`checkbox`,className:`wui-check`,checked:f&&(E?.has(r)||!1),disabled:!f,onChange:e=>kt(r,e.nativeEvent.shiftKey),onMouseDown:e=>{e.shiftKey&&e.preventDefault()},"aria-label":`Select row`})}),_.map((t,n)=>g(`td`,{className:U(H+n,(n===0?`wui-name-cell `:``)+(t.nowrap?`text-nowrap `:``)+ke(t.align)+(t.cellClassName?` ${t.cellClassName}`:``)).className,style:St(H+n,t.cellStyle),"data-label":A&&typeof t.label==`string`?t.label:void 0,children:[t.render?t.render(e):Ae(e[t.key]),n===0&&d?.state===`error`&&h(`span`,{className:de,children:d.message})]},t.key)),C&&h(`td`,{children:h(`div`,{className:`u-row-actions`,children:C(e)})})]}),a&&h(`tr`,{className:`wui-row-expanded`,children:h(`td`,{id:`${c}-expanded`,colSpan:B,children:We(e)})})]},r)},Jt=(e,t)=>e.group?Kt(e,t):qt(e,t),Yt=(e,t)=>W?h(`tr`,{className:`wui-virtual-spacer`,"aria-hidden":`true`,hidden:t===0,children:h(`td`,{colSpan:B,style:{height:t}})},e):null,Q=U(0,`wui-expand-cell`),$=U(+!!L,`wui-select-cell`);return g(ne,{children:[g(V?`wui-data-table`:`div`,{ref:J,...V?{class:_t,resizable:M?``:void 0,"view-key":it||void 0,"data-wui-row-drag":k?``:void 0}:{className:_t,"data-wui-row-drag":k?``:void 0},style:yt,tabIndex:0,...u,...ct,children:[g(`table`,{className:ut,"aria-label":Re,"aria-rowcount":W?q.length+1:void 0,style:Ge===`fixed`?{tableLayout:`fixed`}:void 0,children:[h(`thead`,{children:g(`tr`,{"aria-rowindex":W?1:void 0,children:[L&&h(`th`,{className:Q.className,style:Q.style,children:h(`span`,{className:`visually-hidden`,children:`Expand`})}),T&&h(`th`,{className:$.className,style:$.style,children:h(`input`,{ref:Dt,type:`checkbox`,className:`wui-check`,checked:Tt,onChange:e=>At(e.target.checked),"aria-label":`Select all rows`})}),_.map((e,t)=>{let n=!!(e.sortable&&x),r=Me&&Me.key===e.key,a=e.align===`num`||e.align===`end`,o=n&&h(`span`,{className:`sort-icon${a?` wui-sort-lead`:``}`,children:h(i,{name:`chevrons-up-down`,size:14})}),s=M&&t!==Ct,c=e.width||e.minWidth?{width:e.width,minWidth:e.minWidth}:void 0;return g(`th`,{className:U(H+t,(n?`sortable `:``)+(t===0?`wui-name-cell `:``)+(e.nowrap?`text-nowrap `:``)+(e.grow?`wui-col-grow `:``)+(s?`wui-col-resizable `:``)+ke(e.align)).className,style:St(H+t,c),"data-key":V?e.key:void 0,"aria-label":s&&typeof e.label==`string`?e.label:void 0,"data-pin":e.pin===`start`||e.pin===`end`?e.pin:void 0,tabIndex:n?0:void 0,"aria-sort":r?Me.dir===`asc`?`ascending`:`descending`:n?`none`:void 0,onClick:n?()=>x(e.key):void 0,onKeyDown:n?t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),x(e.key))}:void 0,children:[a&&o,e.label,!a&&o,s&&h(`span`,{className:`wui-col-resize`,role:`separator`,"aria-orientation":`vertical`,"aria-valuemin":ae,"aria-valuemax":ie,tabIndex:0,"aria-label":oe.resize(typeof e.label==`string`?e.label:e.key)})]},e.key)}),C&&(Le?h(`th`,{className:`wui-cell-end`,children:Le}):h(`th`,{className:`wui-cell-end`,children:h(`span`,{className:`visually-hidden`,children:`Actions`})}))]})}),h(`tbody`,{ref:zt,children:S?h(a,{rows:Ne,cols:B}):y?.length?g(ne,{children:[Yt(`before`,X.before),q.slice(X.start,X.end).map((e,t)=>Jt(e,X.start+t)),Yt(`after`,X.after)]}):null}),mt&&!S&&y?.length>0&&h(`tfoot`,{children:g(`tr`,{children:[L&&h(`td`,{className:Q.className,style:Q.style}),T&&h(`td`,{className:$.className,style:$.style}),_.map((e,t)=>h(`td`,{className:U(H+t,(t===0?`wui-name-cell `:``)+(e.nowrap?`text-nowrap `:``)+ke(e.align)).className,style:St(H+t,void 0),children:e.footer?e.footer(y):null},e.key)),C&&h(`td`,{})]})})]}),!S&&!y?.length&&h(`div`,{className:`tbl-empty-block`,children:typeof Gt==`string`?h(`div`,{className:`tbl-empty-plain`,children:Gt}):Gt})]}),je(w)&&h(o,{page:w.page,totalPages:w.totalPages,pageSize:w.pageSize,onPageChange:w.setPage,onPageSizeChange:w.setPageSize,pageSizes:w.pageSizes,mode:w.mode}),Ut&&h(`div`,{ref:Z,className:`visually-hidden`,role:`status`,"aria-live":`polite`,"data-wui-table-status":``})]})}export{y as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import i from"../lib/FieldMessage.js";import a from"./AppRequiredMark.js";import o from"./useWuiControl.js";import{cloneElement as s,forwardRef as c,useId as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/datepicker";var f=[`sm`,`md`,`lg`],p=c(function(c,p){let{value:m,onChange:h,label:g,required:_=!1,hint:v,error:y,name:b,min:x,max:S,placeholder:C=`Choose a date`,disabled:w,size:T,firstDay:E,displayFormat:D,id:O,ariaLabel:k,className:A=``,fieldClassName:j=``,"data-canvas":M,...N}=c;r(`AppDatePicker`,N),n(`AppDatePicker`,`size`,T,f),typeof D==`string`&&D!==``&&/DD|YYYY|YY/.test(D)&&t(`[@webority/ui-react] <AppDatePicker> displayFormat "${D}" uses uppercase day or year tokens, which print as written; the tokens are yyyy, MMMM, MMM, MM, dd and d.`);let P=l(),F=O||P,{setRef:I}=o({ref:p,value:m??``,onChange:h}),L=!g&&!y&&!v,R=y?`${F}-error`:void 0,z=v?`${F}-hint`:void 0,B=u(`wui-datepicker`,{ref:I,value:m||void 0,id:F,name:b,min:x,max:S,placeholder:C,size:T||void 0,"first-day":E==null?void 0:String(E),"display-format":D||void 0,"aria-label":k||(typeof g==`string`?g:void 0),"aria-describedby":R||z,"aria-invalid":y?`true`:void 0,disabled:w?``:void 0,required:_?``:void 0,className:A||void 0,...N});return L?s(B,e(`AppDatePicker`,c)):d(`div`,{...e(`AppDatePicker`,c),className:`field${j?` ${j}`:``}`,children:[g&&d(`label`,{className:`label`,htmlFor:F,children:[g,_&&u(a,{})]}),B,u(i,{error:y,hint:v,errorId:R,hintId:z})]})});export{p as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import i from"../lib/FieldMessage.js";import a from"./AppRequiredMark.js";import o from"./useWuiControl.js";import{cloneElement as s,forwardRef as c,useId as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/datepicker";var f=[`sm`,`md`,`lg`],p=c(function(c,p){let{marker:m,props:h}=e(`AppDatePicker`,c),{value:g,onChange:_,label:v,required:y=!1,hint:b,error:x,name:S,min:C,max:w,placeholder:T=`Choose a date`,disabled:E,size:D,firstDay:O,displayFormat:k,id:A,ariaLabel:j,className:M=``,fieldClassName:N=``,...P}=h;r(`AppDatePicker`,P),n(`AppDatePicker`,`size`,D,f),typeof k==`string`&&k!==``&&/DD|YYYY|YY/.test(k)&&t(`[@webority/ui-react] <AppDatePicker> displayFormat "${k}" uses uppercase day or year tokens, which print as written; the tokens are yyyy, MMMM, MMM, MM, dd and d.`);let F=l(),I=A||F,{setRef:L}=o({ref:p,value:g??``,onChange:_}),R=!v&&!x&&!b,z=x?`${I}-error`:void 0,B=b?`${I}-hint`:void 0,V=u(`wui-datepicker`,{ref:L,value:g||void 0,id:I,name:S,min:C,max:w,placeholder:T,size:D||void 0,"first-day":O==null?void 0:String(O),"display-format":k||void 0,"aria-label":j||(typeof v==`string`?v:void 0),"aria-describedby":z||B,"aria-invalid":x?`true`:void 0,disabled:E?``:void 0,required:y?``:void 0,className:M||void 0,...P});return R?s(V,m):d(`div`,{...m,className:`field${N?` ${N}`:``}`,children:[v&&d(`label`,{className:`label`,htmlFor:I,children:[v,y&&u(a,{})]}),V,u(i,{error:x,hint:b,errorId:z,hintId:B})]})});export{p as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"../lib/FieldMessage.js";import i from"./AppRequiredMark.js";import a from"./useWuiControl.js";import{cloneElement as o,forwardRef as s,useEffect as c,useId as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/date-range";var f=[`sm`,`md`,`lg`],p=e=>{if(e?.length)return e.every(e=>typeof e==`string`)?e.join(`,`):JSON.stringify(e)},m=s(function(s,m){let{start:h,end:g,onChange:_,label:v,required:y=!1,hint:b,error:x,startName:S,endName:C,min:w,max:T,placeholder:E=`Start to End`,disabled:D,size:O,firstDay:k,presets:A,id:j,ariaLabel:M,className:N=``,fieldClassName:P=``,"data-canvas":F,...I}=s;n(`AppDateRangePicker`,I),t(`AppDateRangePicker`,`size`,O,f);let L=l(),R=j||L,{setRef:z,innerRef:B}=a({ref:m,onChange:_});c(()=>{let e=B.current;if(!e)return;let t=h===void 0?e.value.start:h,n=g===void 0?e.value.end:g;(e.value.start!==t||e.value.end!==n)&&(e.value={start:t,end:n})},[h,g,B]);let V=!v&&!x&&!b,H=x?`${R}-error`:void 0,U=b?`${R}-hint`:void 0,W=H||U,G=u(`wui-date-range`,{ref:z,id:R,"start-name":S,"end-name":C,min:w,max:T,placeholder:E,size:O||void 0,"first-day":k==null?void 0:String(k),presets:p(A),"aria-label":M||(typeof v==`string`?v:void 0),"aria-describedby":W,"aria-invalid":x?`true`:void 0,disabled:D?``:void 0,required:y?``:void 0,className:N||void 0,...I});return V?o(G,e(`AppDateRangePicker`,s)):d(`div`,{...e(`AppDateRangePicker`,s),className:`field${P?` ${P}`:``}`,children:[v&&d(`label`,{className:`label`,htmlFor:R,children:[v,y&&u(i,{})]}),G,u(r,{error:x,hint:b,errorId:H,hintId:U})]})});export{m as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"../lib/FieldMessage.js";import i from"./AppRequiredMark.js";import a from"./useWuiControl.js";import{cloneElement as o,forwardRef as s,useEffect as c,useId as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/date-range";var f=[`sm`,`md`,`lg`],p=e=>{if(e?.length)return e.every(e=>typeof e==`string`)?e.join(`,`):JSON.stringify(e)},m=s(function(s,m){let{marker:h,props:g}=e(`AppDateRangePicker`,s),{start:_,end:v,onChange:y,label:b,required:x=!1,hint:S,error:C,startName:w,endName:T,min:E,max:D,placeholder:O=`Start to End`,disabled:k,size:A,firstDay:j,presets:M,id:N,ariaLabel:P,className:F=``,fieldClassName:I=``,...L}=g;n(`AppDateRangePicker`,L),t(`AppDateRangePicker`,`size`,A,f);let R=l(),z=N||R,{setRef:B,innerRef:V}=a({ref:m,onChange:y});c(()=>{let e=V.current;if(!e)return;let t=_===void 0?e.value.start:_,n=v===void 0?e.value.end:v;(e.value.start!==t||e.value.end!==n)&&(e.value={start:t,end:n})},[_,v,V]);let H=!b&&!C&&!S,U=C?`${z}-error`:void 0,W=S?`${z}-hint`:void 0,G=U||W,K=u(`wui-date-range`,{ref:B,id:z,"start-name":w,"end-name":T,min:E,max:D,placeholder:O,size:A||void 0,"first-day":j==null?void 0:String(j),presets:p(M),"aria-label":P||(typeof b==`string`?b:void 0),"aria-describedby":G,"aria-invalid":C?`true`:void 0,disabled:k?``:void 0,required:x?``:void 0,className:F||void 0,...L});return H?o(K,h):d(`div`,{...h,className:`field${I?` ${I}`:``}`,children:[b&&d(`label`,{className:`label`,htmlFor:z,children:[b,x&&u(i,{})]}),K,u(r,{error:C,hint:S,errorId:U,hintId:W})]})});export{m as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{isEmpty as r}from"../lib/emptyValue.js";import{jsx as i,jsxs as a}from"react/jsx-runtime";var o=[`sm`,`md`],s=[`grid`,`summary`];function c(c){let{items:l=[],columns:u=2,size:d=`md`,bordered:f=!1,layout:p=`grid`,title:m,className:h=``,...g}=c;return n(`AppDescriptions`,g),t(`AppDescriptions`,`size`,d,o),t(`AppDescriptions`,`layout`,p,s),a(`div`,{className:[`descs`,`descs-col-${u}`,d&&d!==`md`?`descs-${d}`:``,f?`descs-bordered`:``,p===`summary`?`wui-descs-summary`:``,h].filter(Boolean).join(` `)||void 0,...e(`AppDescriptions`,c),...g,children:[m&&i(`div`,{className:`descs-title`,children:m}),i(`dl`,{className:`descs-list`,children:l.map((e,t)=>{let n=r(e.value),o=Math.min(12,Math.max(1,e.span??1)),s=e.key??`${e.label}-${t}`;return a(`div`,{className:`descs-item${e.emphasis?` wui-descs-emphasis`:``} wui-descs-span-${o}`,children:[i(`dt`,{className:`descs-label`,children:e.label}),i(`dd`,{className:`descs-value${n?` is-empty`:``}`,children:n?`-`:e.value})]},s)})})]})}export{c as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./renderIconProp.js";import{isEmpty as i}from"../lib/emptyValue.js";import{jsx as a,jsxs as o}from"react/jsx-runtime";var s=[`sm`,`md`],c=[`grid`,`summary`,`list`],l=[1,2,3,4];function u(u){let{marker:d,props:f}=e(`AppDescriptions`,u),{items:p=[],columns:m=2,size:h=`md`,bordered:g=!1,layout:_=`grid`,title:v,className:y=``,...b}=f;return n(`AppDescriptions`,b),t(`AppDescriptions`,`columns`,m,l),t(`AppDescriptions`,`size`,h,s),t(`AppDescriptions`,`layout`,_,c),o(`div`,{className:[`descs`,`descs-col-${m}`,h&&h!==`md`?`descs-${h}`:``,g?`descs-bordered`:``,_===`summary`?`wui-descs-summary`:``,_===`list`?`wui-descs-list`:``,m===4?`wui-descs-col-4`:``,y].filter(Boolean).join(` `)||void 0,...d,...b,children:[v&&a(`div`,{className:`descs-title`,children:v}),a(`dl`,{className:`descs-list`,children:p.map((e,t)=>{let n=i(e.value),s=Math.min(12,Math.max(1,e.span??1)),c=e.key??`${e.label}-${t}`,l=n?`-`:e.value;return o(`div`,{className:`descs-item${e.emphasis?` wui-descs-emphasis`:``} wui-descs-span-${s}`,children:[e.icon&&a(`span`,{className:`wui-descs-icon`,children:r(e.icon,{size:16})}),a(`dt`,{className:`descs-label`,children:e.label}),a(`dd`,{className:`descs-value${n?` is-empty`:``}`,children:e.href?a(`a`,{className:`wui-descs-link`,href:e.href,children:l}):l})]},c)})})]})}export{u as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import{jsx as n}from"react/jsx-runtime";function r(r){let{open:i=!1,onClose:a,label:o,sticky:s=!0,children:c,className:l=``,...u}=r;t(`AppDetailPane`,u);let d=e=>{u.onKeyDown?.(e),e.key===`Escape`&&a&&a()};return n(`aside`,{...e(`AppDetailPane`,r),...u,className:[`wui-detail-pane`,l].filter(Boolean).join(` `),"aria-label":o,"data-wui-pane-host":``,"data-sticky":s?``:void 0,hidden:!i,onKeyDown:d,children:c})}export{r as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import{jsx as n}from"react/jsx-runtime";function r(r){let{marker:i,props:a}=e(`AppDetailPane`,r),{open:o=!1,onClose:s,label:c,sticky:l=!0,children:u,className:d=``,...f}=a;t(`AppDetailPane`,f);let p=e=>{f.onKeyDown?.(e),e.key===`Escape`&&s&&s()};return n(`aside`,{...i,...f,className:[`wui-detail-pane`,d].filter(Boolean).join(` `),"aria-label":c,"data-wui-pane-host":``,"data-sticky":l?``:void 0,hidden:!o,onKeyDown:p,children:u})}export{r as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"../lib/DiscardPrompt.js";import{useEffect as i,useRef as a,useState as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import"@webority/ui-elements/elements/drawer";var l=[`end`,`start`],u=[`sm`,`md`,`lg`,`xl`],d=[50,90],f=e=>Array.isArray(e)&&e.length>0&&e.every(e=>Number.isFinite(e)&&e>=10&&e<=100);function p(p){let{open:m=!1,onClose:h,title:g,subtitle:_,ariaLabel:v,side:y=`end`,size:b=`md`,snapPoints:x=d,defaultSnap:S=0,onSnapChange:C,dismissible:w=!0,staticBackdrop:T=!1,confirmDiscard:E,dirty:D=!1,footer:O,className:k=``,children:A,...j}=p;n(`AppDrawer`,j),t(`AppDrawer`,`side`,y,l),t(`AppDrawer`,`size`,b,u),t(`AppDrawer`,`snapPoints`,f(x)?void 0:JSON.stringify(x),[`an array of numbers from 10 to 100`]);let M=a(null),N=a(null),P=a(null),[F,I]=o(!1);N.current={onClose:h,onSnapChange:C,confirmDiscard:E,dirty:D},i(()=>{m||I(!1)},[m]),i(()=>{F&&P.current?.focus()},[F]),i(()=>{let e=M.current;if(!e)return;let t=t=>{if(t.target===e){if(t.preventDefault(),N.current.confirmDiscard&&N.current.dirty){I(!0);return}N.current.onClose?.()}},n=t=>{t.target===e&&N.current.onSnapChange?.(t.detail.index,t.detail.percent)},r=n=>{n.target.closest?.(`[data-wui-dismiss]`)&&t({target:e,preventDefault(){}})};return e.addEventListener(`wui-drawer-close`,t),e.addEventListener(`wui-drawer-snap`,n),e.addEventListener(`click`,r),()=>{e.removeEventListener(`wui-drawer-close`,t),e.removeEventListener(`wui-drawer-snap`,n),e.removeEventListener(`click`,r)}},[]);let L=()=>{I(!1),M.current?.dispatchEvent(new CustomEvent(`wui:drawer:discard`,{bubbles:!0})),N.current.onClose?.()},R=f(x)?x:d;return c(`wui-drawer`,{ref:M,...e(`AppDrawer`,p),...j,class:[`wui-drawer`,k].filter(Boolean).join(` `),side:y,size:b,"snap-points":R.join(`,`),"default-snap":String(S),static:T?``:void 0,"confirm-discard":E||void 0,open:m?``:void 0,children:[s(`div`,{className:`wui-drawer-backdrop`,"data-wui-drawer-backdrop":``,"aria-hidden":`true`}),c(`div`,{className:`wui-drawer-panel`,role:`dialog`,"aria-modal":`true`,"aria-label":v||g||void 0,tabIndex:-1,children:[s(`div`,{className:`wui-drawer-grip`,"data-wui-drawer-grip":``,children:s(`div`,{className:`wui-drawer-handle`,role:`slider`,tabIndex:0,"aria-orientation":`vertical`,"aria-label":`Sheet height`})}),c(`div`,{className:`wui-drawer-header`,"data-wui-drawer-grip":``,children:[c(`div`,{className:`wui-drawer-headtext`,children:[g&&s(`div`,{className:`wui-drawer-title`,children:g}),_&&s(`div`,{className:`wui-drawer-subtitle`,children:_})]}),w&&s(`button`,{type:`button`,className:`wui-drawer-close`,"data-wui-drawer-close":``,"aria-label":`Close`,children:s(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:s(`path`,{d:`M18 6 6 18M6 6l12 12`})})})]}),s(`div`,{className:`wui-drawer-body`,children:A}),(O||F)&&c(`div`,{className:F?`wui-drawer-footer wui-drawer-discarding`:`wui-drawer-footer`,children:[F&&s(r,{text:E,confirmRef:P,onDiscard:L,onKeep:()=>I(!1)}),O]})]})]})}export{p as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppIcon.js";import i from"../lib/DiscardPrompt.js";import{useEffect as a,useRef as o,useState as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import"@webority/ui-elements/elements/drawer";var u=[`end`,`start`],d=[`sm`,`md`,`lg`,`xl`],f=[50,90],p=e=>Array.isArray(e)&&e.length>0&&e.every(e=>Number.isFinite(e)&&e>=10&&e<=100);function m(m){let{marker:h,props:g}=e(`AppDrawer`,m),{open:_=!1,onClose:v,title:y,titleIcon:b,header:x,subtitle:S,ariaLabel:C,side:w=`end`,size:T=`md`,width:E,maxWidth:D,snapPoints:O=f,defaultSnap:k=0,sheet:A=!0,onSnapChange:j,onOpened:M,onClosed:N,dismissible:P=!0,closeLabel:F=`Close`,staticBackdrop:I=!1,confirmDiscard:L,dirty:R=!1,bodyClassName:z=``,footer:B,className:V=``,style:H,children:U,...W}=g;n(`AppDrawer`,W),t(`AppDrawer`,`side`,w,u),t(`AppDrawer`,`size`,T,d),t(`AppDrawer`,`snapPoints`,p(O)?void 0:JSON.stringify(O),[`an array of numbers from 10 to 100`]);let G=o(null),K=o(null),q=o(null),[J,Y]=s(!1);K.current={onClose:v,onSnapChange:j,onOpened:M,onClosed:N,confirmDiscard:L,dirty:R},a(()=>{_||Y(!1)},[_]),a(()=>{J&&q.current?.focus()},[J]),a(()=>{let e=G.current;if(!e)return;let t=t=>{if(t.target===e){if(t.preventDefault(),K.current.confirmDiscard&&K.current.dirty){Y(!0);return}K.current.onClose?.()}},n=t=>{t.target===e&&K.current.onSnapChange?.(t.detail.index,t.detail.percent)},r=t=>{t.target===e&&K.current.onOpened?.()},i=t=>{t.target===e&&K.current.onClosed?.()},a=n=>{n.target.closest?.(`[data-wui-dismiss]`)&&t({target:e,preventDefault(){}})};return e.addEventListener(`wui-drawer-close`,t),e.addEventListener(`wui-drawer-snap`,n),e.addEventListener(`wui-drawer-opened`,r),e.addEventListener(`wui-drawer-closed`,i),e.addEventListener(`click`,a),()=>{e.removeEventListener(`wui-drawer-close`,t),e.removeEventListener(`wui-drawer-snap`,n),e.removeEventListener(`wui-drawer-opened`,r),e.removeEventListener(`wui-drawer-closed`,i),e.removeEventListener(`click`,a)}},[]);let X=()=>{Y(!1),G.current?.dispatchEvent(new CustomEvent(`wui:drawer:discard`,{bubbles:!0})),K.current.onClose?.()},Z=p(O)?O:f,Q={...E&&{"--wui-drawer-width":E},...D&&{"--wui-drawer-max-width":D},...H};return l(`wui-drawer`,{ref:G,...h,...W,class:[`wui-drawer`,V].filter(Boolean).join(` `),side:w,size:T,"snap-points":Z.join(`,`),"default-snap":String(k),static:I?``:void 0,"no-sheet":A?void 0:``,"confirm-discard":L||void 0,open:_?``:void 0,style:Q,children:[c(`div`,{className:`wui-drawer-backdrop`,"data-wui-drawer-backdrop":``,"aria-hidden":`true`}),l(`div`,{className:`wui-drawer-panel`,role:`dialog`,"aria-modal":`true`,"aria-label":C||y||void 0,tabIndex:-1,children:[A&&c(`div`,{className:`wui-drawer-grip`,"data-wui-drawer-grip":``,children:c(`div`,{className:`wui-drawer-handle`,role:`slider`,tabIndex:0,"aria-orientation":`vertical`,"aria-label":`Sheet height`})}),x===void 0?l(`div`,{className:`wui-drawer-header`,"data-wui-drawer-grip":A?``:void 0,children:[l(`div`,{className:`wui-drawer-headtext`,children:[y&&l(`div`,{className:`wui-drawer-title`,children:[b&&c(`span`,{className:`wui-drawer-title-ic`,children:c(r,{name:b,size:18})}),y]}),S&&c(`div`,{className:`wui-drawer-subtitle`,children:S})]}),P&&c(`button`,{type:`button`,className:`wui-drawer-close`,"data-wui-drawer-close":``,"aria-label":F,children:c(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:c(`path`,{d:`M18 6 6 18M6 6l12 12`})})})]}):x,c(`div`,{className:[`wui-drawer-body`,z].filter(Boolean).join(` `),children:U}),(B||J)&&l(`div`,{className:J?`wui-drawer-footer wui-drawer-discarding`:`wui-drawer-footer`,children:[J&&c(i,{text:L,confirmRef:q,onDiscard:X,onKeep:()=>Y(!1)}),B]})]})]})}export{m as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"../lib/FieldMessage.js";import{DEFAULT_MAX_SIZE_MB as i,acceptLabel as a,validateFile as o}from"@webority/ui-elements/helpers";import{useId as s,useState as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";function d(d){let{label:f,id:p,onChange:m,multiple:h=!1,accept:g=``,maxSizeMb:_=i,error:v,hint:y,disabled:b=!1,className:x=``,fieldClassName:S=``,style:C,"data-canvas":w,...T}=d;t(`AppDropZone`,T);let[E,D]=c(!1),[O,k]=c(``),A=s(),j=p||A,M=v||O,N=M?`${j}-error`:void 0,P=y&&!M?`${j}-hint`:void 0,F=N||P,I=g?a(g):`Any file type`,L=e=>{let t=Array.from(e||[]);if(!t.length)return;if(!h){let e=o(t[0],{accept:g,maxSizeMb:_});k(e||``),e||m(t[0]);return}let n=``,r=[];for(let e of t){let t=o(e,{accept:g,maxSizeMb:_});if(t){n||=t;continue}r.push(e)}k(n),r.length&&m(r)};return u(`div`,{...e(`AppDropZone`,d),className:`field${S?` ${S}`:``}`,children:[f?l(`label`,{className:`label`,htmlFor:j,children:f}):null,u(`div`,{className:`file-input file-input-tall${E?` dragging`:``}${M?` error`:``}${x?` ${x}`:``}`,style:C,"aria-disabled":b||void 0,onDragOver:e=>{e.preventDefault(),!b&&!E&&D(!0)},onDragLeave:e=>{e.preventDefault(),D(!1)},onDrop:e=>{e.preventDefault(),D(!1),b||L(e.dataTransfer.files)},children:[u(`label`,{htmlFor:j,className:`file-input-zone-label`,children:[l(`span`,{className:`file-input-icon`,children:l(n,{name:`upload`,size:24})}),u(`span`,{className:`file-input-title`,children:[l(`span`,{className:`browse`,children:`Click to upload`}),` or drag & drop`]}),l(`span`,{className:`file-input-text`,children:_>0?`${I}, up to ${_} MB`:I})]}),l(`input`,{id:j,type:`file`,"aria-describedby":F,accept:g,multiple:h||void 0,disabled:b||void 0,className:`visually-hidden`,onClick:e=>{e.currentTarget.value=``},onChange:e=>L(e.target.files),...T})]}),l(r,{error:M,hint:y,errorId:N,hintId:P})]})}export{d as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"../lib/FieldMessage.js";import i from"../lib/useFileDrop.js";import{DEFAULT_MAX_SIZE_MB as a,acceptDroppedFiles as o,acceptLabel as s}from"@webority/ui-elements/helpers";import{useId as c,useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";function f(f){let{marker:p,props:m}=e(`AppDropZone`,f),{label:h,id:g,onChange:_,multiple:v=!1,accept:y=``,maxSizeMb:b=a,error:x,hint:S,disabled:C=!1,className:w=``,fieldClassName:T=``,style:E,...D}=m;t(`AppDropZone`,D);let[O,k]=l(``),A=c(),j=g||A,M=x||O,N=M?`${j}-error`:void 0,P=S&&!M?`${j}-hint`:void 0,F=N||P,I=y?s(y):`Any file type`,L={accept:y,maxSizeMb:b,multiple:v},R=e=>{k(``),_(v?e:e[0])},z=e=>k(e.message),{dragOver:B,dropProps:V}=i({...L,disabled:C,onFiles:R,onReject:z}),H=e=>{let{files:t,rejections:n}=o(e,L);!t.length&&!n.length||(t.length&&R(t),n.length&&z(n[0]))};return d(`div`,{...p,className:`field${T?` ${T}`:``}`,children:[h?u(`label`,{className:`label`,htmlFor:j,children:h}):null,d(`div`,{className:`file-input file-input-tall${B?` dragging`:``}${M?` error`:``}${w?` ${w}`:``}`,style:E,"aria-disabled":C||void 0,...V,children:[d(`label`,{htmlFor:j,className:`file-input-zone-label`,children:[u(`span`,{className:`file-input-icon`,children:u(n,{name:`upload`,size:24})}),d(`span`,{className:`file-input-title`,children:[u(`span`,{className:`browse`,children:`Click to upload`}),` or drag & drop`]}),u(`span`,{className:`file-input-text`,children:b>0?`${I}, up to ${b} MB`:I})]}),u(`input`,{id:j,type:`file`,"aria-describedby":F,accept:y,multiple:v||void 0,disabled:C||void 0,className:`visually-hidden`,onClick:e=>{e.currentTarget.value=``},onChange:e=>H(e.target.files),...D})]}),u(r,{error:M,hint:S,errorId:N,hintId:P})]})}export{f as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import{shortcutAria as i,shortcutChip as a}from"../lib/shortcutChip.js";import o from"./withTooltip.js";import s from"./AppIcon.js";import c from"./renderIconProp.js";import{Fragment as l,forwardRef as u,useEffect as d,useRef as f,useState as p}from"react";import{Dropdown as m}from"react-bootstrap";import{jsx as h,jsxs as g}from"react/jsx-runtime";var _=[`sm`,`md`,`lg`,`xl`],v=[`neutral`],y=[`sm`,`md`,`lg`],b=e=>{e.preventDefault(),e.stopPropagation()},x=u(function(e,t){return h(`button`,{...e,ref:t,"aria-disabled":`true`})}),S=!1;function C(){let e=!0;try{e=process.env.NODE_ENV!==`production`}catch{e=!0}!e||S||(S=!0,t("[@webority/ui-react] <AppDropdown> icon-only toggle has no accessible name — pass `label` or `ariaLabel`."))}function w(s){let{icon:u,iconSize:S,toggleClassName:w,toggleVariant:E,menuWidth:D,label:O,ariaLabel:k,align:A=`end`,items:j=[],menuClassName:M=``,linkComponent:N,children:P,trigger:F,show:I,onToggle:L,...R}=s;r(`AppDropdown`,R);for(let e of j)n(`AppDropdown`,`items[].hiddenFrom`,e.hiddenFrom,_);!F&&!k&&!O&&C(),n(`AppDropdown`,`toggleVariant`,E,v),n(`AppDropdown`,`menuWidth`,D,y),E&&!F&&t(`AppDropdown: toggleVariant needs a trigger; the icon toggle ignores it.`);let z=(w??(F?`wui-dropdown-trigger`:`topbar-icon-btn`))+(F&&E===`neutral`?` wui-dropdown-trigger-neutral`:``),B=[M,y.includes(D)?`wui-dropdown-menu-${D}`:``].filter(Boolean).join(` `),V=I!==void 0,[H,U]=p(!1),W=V?!!I:H,G=f(null);G.current=(e,t)=>{V||U(e),L?.(e,t)};let K=f(null);return d(()=>{if(!W)return;let e=K.current?.getBoundingClientRect(),t=()=>{let t=K.current?.getBoundingClientRect();(!e||!t||Math.abs(t.top-e.top)>2||Math.abs(t.left-e.left)>2)&&G.current(!1,{source:`scroll`})},n=()=>G.current(!1,{source:`resize`});return window.addEventListener(`scroll`,t,{capture:!0,passive:!0}),window.addEventListener(`resize`,n),()=>{window.removeEventListener(`scroll`,t,{capture:!0}),window.removeEventListener(`resize`,n)}},[W]),g(m,{ref:K,align:A,show:W,onToggle:(e,t)=>G.current(e,t),...e(`AppDropdown`,s),...R,children:[h(m.Toggle,{as:T,icon:u,iconSize:S,btnClassName:z,trigger:F,title:O,"aria-label":k??(F?void 0:O)}),h(m.Menu,{className:B,renderOnMount:!0,popperConfig:{strategy:`fixed`},children:P??j.map(e=>{if(e.header!=null)return h(`div`,{className:`dropdown-header`,children:e.header},e.key);if(e.divider)return h(m.Divider,{},e.key);if(e.disabled)return h(l,{children:o(g(m.Item,{as:x,type:`button`,className:[e.danger&&`danger`,`wui-dropdown-item-disabled`].filter(Boolean).join(` `),onClick:b,children:[e.image?h(`img`,{src:e.image,alt:``}):c(e.icon,{size:16}),e.label,e.disabledReason&&g(`span`,{className:`visually-hidden wui-dropdown-item-reason`,children:[`: `,e.disabledReason]})]}),e.disabledReason,`auto`)},e.key);let t=e.to?N?{as:N,to:e.to}:{as:`a`,href:e.to}:{as:`button`,type:`button`},n=[e.danger&&`danger`,_.includes(e.hiddenFrom)&&`wui-hidden-from-${e.hiddenFrom}`].filter(Boolean).join(` `)||void 0;return g(m.Item,{...t,onClick:e.onClick,className:n,"aria-keyshortcuts":i(e.shortcut),children:[e.image?h(`img`,{src:e.image,alt:``}):c(e.icon,{size:16}),e.label,a(e.shortcut)]},e.key)})})]})}var T=u(function({icon:e,iconSize:t=20,btnClassName:n=`topbar-icon-btn`,trigger:r,"aria-label":i,className:a,...o},c){return h(`button`,{ref:c,type:`button`,className:n,"aria-label":i,...o,children:r??h(s,{name:e,size:t})})});export{w as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import{shortcutAria as i,shortcutChip as a}from"../lib/shortcutChip.js";import o from"./withTooltip.js";import s from"./AppIcon.js";import c from"./renderIconProp.js";import{Fragment as l,forwardRef as u,useEffect as d,useRef as f,useState as p}from"react";import{Dropdown as m}from"react-bootstrap";import{jsx as h,jsxs as g}from"react/jsx-runtime";var _=[`sm`,`md`,`lg`,`xl`],v=[`neutral`],y=[`sm`,`md`,`lg`],b=e=>{e.preventDefault(),e.stopPropagation()},x=u(function(e,t){return h(`button`,{...e,ref:t,"aria-disabled":`true`})}),S=!1;function C(){let e=!0;try{e=process.env.NODE_ENV!==`production`}catch{e=!0}!e||S||(S=!0,t("[@webority/ui-react] <AppDropdown> icon-only toggle has no accessible name — pass `label` or `ariaLabel`."))}function w(s){let{marker:u,props:S}=e(`AppDropdown`,s),{icon:w,iconSize:E,toggleClassName:D,toggleVariant:O,menuWidth:k,label:A,ariaLabel:j,align:M=`end`,items:N=[],menuClassName:P=``,linkComponent:F,children:I,trigger:L,show:R,onToggle:z,...B}=S;r(`AppDropdown`,B);for(let e of N)n(`AppDropdown`,`items[].hiddenFrom`,e.hiddenFrom,_);!L&&!j&&!A&&C(),n(`AppDropdown`,`toggleVariant`,O,v),n(`AppDropdown`,`menuWidth`,k,y),O&&!L&&t(`AppDropdown: toggleVariant needs a trigger; the icon toggle ignores it.`);let V=(D??(L?`wui-dropdown-trigger`:`topbar-icon-btn`))+(L&&O===`neutral`?` wui-dropdown-trigger-neutral`:``),H=[P,y.includes(k)?`wui-dropdown-menu-${k}`:``].filter(Boolean).join(` `),U=R!==void 0,[W,G]=p(!1),K=U?!!R:W,q=f(null);q.current=(e,t)=>{U||G(e),z?.(e,t)};let J=f(null);return d(()=>{if(!K)return;let e=J.current?.getBoundingClientRect(),t=()=>{let t=J.current?.getBoundingClientRect();(!e||!t||Math.abs(t.top-e.top)>2||Math.abs(t.left-e.left)>2)&&q.current(!1,{source:`scroll`})},n=()=>q.current(!1,{source:`resize`});return window.addEventListener(`scroll`,t,{capture:!0,passive:!0}),window.addEventListener(`resize`,n),()=>{window.removeEventListener(`scroll`,t,{capture:!0}),window.removeEventListener(`resize`,n)}},[K]),g(m,{ref:J,align:M,show:K,onToggle:(e,t)=>q.current(e,t),...u,...B,children:[h(m.Toggle,{as:T,icon:w,iconSize:E,btnClassName:V,trigger:L,title:A,"aria-label":j??(L?void 0:A)}),h(m.Menu,{className:H,renderOnMount:!0,popperConfig:{strategy:`fixed`},children:I??N.map(e=>{if(e.header!=null)return h(`div`,{className:`dropdown-header`,children:e.header},e.key);if(e.divider)return h(m.Divider,{},e.key);if(e.disabled)return h(l,{children:o(g(m.Item,{as:x,type:`button`,className:[e.danger&&`danger`,`wui-dropdown-item-disabled`].filter(Boolean).join(` `),onClick:b,children:[e.image?h(`img`,{src:e.image,alt:``}):c(e.icon,{size:16}),e.label,e.disabledReason&&g(`span`,{className:`visually-hidden wui-dropdown-item-reason`,children:[`: `,e.disabledReason]})]}),e.disabledReason,`auto`)},e.key);let t=e.to?F?{as:F,to:e.to}:{as:`a`,href:e.to}:{as:`button`,type:`button`},n=[e.danger&&`danger`,_.includes(e.hiddenFrom)&&`wui-hidden-from-${e.hiddenFrom}`].filter(Boolean).join(` `)||void 0;return g(m.Item,{...t,onClick:e.onClick,className:n,"aria-keyshortcuts":i(e.shortcut),children:[e.image?h(`img`,{src:e.image,alt:``}):c(e.icon,{size:16}),e.label,a(e.shortcut)]},e.key)})})]})}var T=u(function({icon:e,iconSize:t=20,btnClassName:n=`topbar-icon-btn`,trigger:r,"aria-label":i,className:a,...o},c){return h(`button`,{ref:c,type:`button`,className:n,"aria-label":i,...o,children:r??h(s,{name:e,size:t})})});export{w as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppIcon.js";import{formatDate as i,toInstant as a}from"@webority/ui-elements/helpers";import{jsx as o,jsxs as s}from"react/jsx-runtime";var c=864e5,l=330*6e4,u=14,d=[`days`,`due`],f=e=>Math.floor((e+l)/c),p=(...e)=>e.filter(Boolean).join(` `),m=(e,t)=>e===`due`?t===0?`Due today`:t===1?`Due tomorrow`:`Due in ${t} days`:t===1?`1 day left`:`${t} days left`;function h(l){let{date:h,soonDays:g,soonWording:_=`days`,icon:v=!1,overdue:y=!1,overdueLabel:b,className:x=``,...S}=l;n(`AppDueDate`,S),t(`AppDueDate`,`soonWording`,_,d);let C=a(h);if(!Number.isFinite(C))return o(`wui-due-date`,{class:p(`wui-due-date`,`wui-due-date-empty`,x),...e(`AppDueDate`,l),...S,children:o(`time`,{children:`Not set`})});let w=f(C),T=new Date(w*c).toISOString().slice(0,10),E=w-f(Date.now()),D=v?o(r,{name:`calendar`,size:u}):null;if(y){let t=i(C);return s(`wui-due-date`,{class:p(`wui-due-date`,`wui-due-date-danger`,x),title:`Overdue since ${t}`,...e(`AppDueDate`,l),...S,children:[o(r,{name:`danger`,size:u}),D,o(`time`,{dateTime:T,children:b||t})]})}return Number.isFinite(g)&&E>=0&&E<=g?s(`wui-due-date`,{class:p(`wui-due-date`,`wui-due-date-warning`,x),...e(`AppDueDate`,l),...S,children:[D,o(`time`,{dateTime:T,children:m(_,E)})]}):s(`wui-due-date`,{class:p(`wui-due-date`,x),...e(`AppDueDate`,l),...S,children:[D,o(`time`,{dateTime:T,children:i(C)})]})}export{h as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppIcon.js";import{formatDate as i,toInstant as a}from"@webority/ui-elements/helpers";import{jsx as o,jsxs as s}from"react/jsx-runtime";var c=864e5,l=330*6e4,u=14,d=[`days`,`due`],f=e=>Math.floor((e+l)/c),p=(...e)=>e.filter(Boolean).join(` `),m=(e,t)=>e===`due`?t===0?`Due today`:t===1?`Due tomorrow`:`Due in ${t} days`:t===1?`1 day left`:`${t} days left`;function h(l){let{marker:h,props:g}=e(`AppDueDate`,l),{date:_,soonDays:v,soonWording:y=`days`,icon:b=!1,overdue:x=!1,overdueLabel:S,className:C=``,...w}=g;n(`AppDueDate`,w),t(`AppDueDate`,`soonWording`,y,d);let T=a(_);if(!Number.isFinite(T))return o(`wui-due-date`,{class:p(`wui-due-date`,`wui-due-date-empty`,C),...h,...w,children:o(`time`,{children:`Not set`})});let E=f(T),D=new Date(E*c).toISOString().slice(0,10),O=E-f(Date.now()),k=b?o(r,{name:`calendar`,size:u}):null;if(x){let e=i(T);return s(`wui-due-date`,{class:p(`wui-due-date`,`wui-due-date-danger`,C),title:`Overdue since ${e}`,...h,...w,children:[o(r,{name:`danger`,size:u}),k,o(`time`,{dateTime:D,children:S||e})]})}return Number.isFinite(v)&&O>=0&&O<=v?s(`wui-due-date`,{class:p(`wui-due-date`,`wui-due-date-warning`,C),...h,...w,children:[k,o(`time`,{dateTime:D,children:m(y,O)})]}):s(`wui-due-date`,{class:p(`wui-due-date`,C),...h,...w,children:[k,o(`time`,{dateTime:D,children:i(T)})]})}export{h as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./renderIconProp.js";import i,{ILLUSTRATION_NAMES as a}from"../lib/emptyIllustration.js";import{jsx as o,jsxs as s}from"react/jsx-runtime";var c=[`md`,`sm`];function l(l){let{icon:u,illustration:d,iconSize:f=24,size:p=`md`,title:m,text:h,action:g,className:_=``,style:v,...y}=l;n(`AppEmptyState`,y),t(`AppEmptyState`,`size`,p,c),typeof d==`string`&&t(`AppEmptyState`,`illustration`,d,a);let b=typeof d==`string`&&a.includes(d),x=d!=null&&typeof d!=`string`?d:null;return s(`div`,{className:[`empty-state`,p===`sm`?`empty-state-sm`:``,_].filter(Boolean).join(` `),style:v,...e(`AppEmptyState`,l),...y,children:[b?o(i,{name:d,className:`wui-empty-illustration`}):null,x?o(`span`,{className:`wui-empty-illustration wui-empty-illustration-custom`,"aria-hidden":`true`,children:x}):null,u&&!b&&!x?o(`div`,{className:`empty-state-icon`,children:r(u,{size:f})}):null,m!=null&&o(`div`,{className:`empty-state-title`,children:m}),h!=null&&o(`div`,{className:`empty-state-message`,children:h}),g&&o(`div`,{className:`empty-state-action`,children:g})]})}export{l as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import i from"./renderIconProp.js";import a,{ILLUSTRATION_NAMES as o}from"../lib/emptyIllustration.js";import{jsx as s,jsxs as c}from"react/jsx-runtime";var l=[`md`,`sm`],u=[`card`,`table`],d=!1;function f(f){let{marker:p,props:m}=e(`AppEmptyState`,f),{icon:h,illustration:g,iconSize:_=24,size:v=`md`,variant:y=`card`,title:b,text:x,action:S,className:C=``,style:w,...T}=m;r(`AppEmptyState`,T),n(`AppEmptyState`,`size`,v,l),n(`AppEmptyState`,`variant`,y,u),y===`table`&&v===`sm`&&!d&&(d=!0,t(`[@webority/ui-react] <AppEmptyState> size="sm" has no table look; variant="table" uses the md scale.`)),typeof g==`string`&&n(`AppEmptyState`,`illustration`,g,o);let E=typeof g==`string`&&o.includes(g),D=g!=null&&typeof g!=`string`?g:null;return c(`div`,{className:[`empty-state`,v===`sm`?`empty-state-sm`:``,y===`table`?`wui-empty-state-table`:``,C].filter(Boolean).join(` `),style:w,...p,...T,children:[E?s(a,{name:g,className:`wui-empty-illustration`}):null,D?s(`span`,{className:`wui-empty-illustration wui-empty-illustration-custom`,"aria-hidden":`true`,children:D}):null,h&&!E&&!D?s(`div`,{className:`empty-state-icon`,children:i(h,{size:_})}):null,b!=null&&s(`div`,{className:`empty-state-title`,children:b}),x!=null&&s(`div`,{className:`empty-state-message`,children:x}),S&&s(`div`,{className:`empty-state-action`,children:S})]})}export{f as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"../lib/focusField.js";import{useEffect as r,useId as i,useRef as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c(c){let{errors:l=[],title:u,autoFocus:d=!0,id:f,className:p=``,...m}=c;t(`AppErrorSummary`,m);let h=i(),g=f||h,_=a(null),v=a(0),y=l.length;return r(()=>{d&&y>0&&v.current===0&&_.current?.focus(),v.current=y},[y,d]),y?s(`div`,{ref:_,className:[`alert alert-danger wui-error-summary`,p].filter(Boolean).join(` `),role:`alert`,tabIndex:-1,"aria-labelledby":`${g}-title`,id:g,"data-autofocus":d?``:void 0,...e(`AppErrorSummary`,c),...m,children:[o(`h2`,{className:`wui-error-summary-title`,id:`${g}-title`,children:u??`Fix ${y} field${y>1?`s`:``} to continue`}),o(`ul`,{className:`wui-error-summary-list`,children:l.map(e=>o(`li`,{children:o(`a`,{href:`#${e.field}`,onClick:t=>{t.preventDefault(),n(e.field)},children:e.message})},`${e.field}:${e.message}`))})]}):null}export{c as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"../lib/focusField.js";import{useEffect as r,useId as i,useRef as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c(c){let{marker:l,props:u}=e(`AppErrorSummary`,c),{errors:d=[],title:f,autoFocus:p=!0,id:m,className:h=``,...g}=u;t(`AppErrorSummary`,g);let _=i(),v=m||_,y=a(null),b=a(0),x=d.length;return r(()=>{p&&x>0&&b.current===0&&y.current?.focus(),b.current=x},[x,p]),x?s(`div`,{ref:y,className:[`alert alert-danger wui-error-summary`,h].filter(Boolean).join(` `),role:`alert`,tabIndex:-1,"aria-labelledby":`${v}-title`,id:v,"data-autofocus":p?``:void 0,...l,...g,children:[o(`h2`,{className:`wui-error-summary-title`,id:`${v}-title`,children:f??`Fix ${x} field${x>1?`s`:``} to continue`}),o(`ul`,{className:`wui-error-summary-list`,children:d.map(e=>o(`li`,{children:o(`a`,{href:`#${e.field}`,onClick:t=>{t.preventDefault(),n(e.field)},children:e.message})},`${e.field}:${e.message}`))})]}):null}export{c as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"./AppProgress.js";import i from"../lib/FieldMessage.js";import{keyOf as a,linkOf as o,nameOf as s,sizeLabelOf as c,uploadErrorOf as l,uploadProgressOf as u,useItemUrl as d}from"../lib/fileItem.js";import f from"../lib/FileItemRow.js";import{DEFAULT_IMAGE_ACCEPT as p,DEFAULT_MAX_SIZE_MB as m,acceptLabel as h,isImageFile as g,isImageOnlyAccept as _,validateFile as v}from"@webority/ui-elements/helpers";import{useId as y,useState as b}from"react";import{Fragment as x,jsx as S,jsxs as C}from"react/jsx-runtime";function w(r){let{label:s=`Attachment`,value:c,name:l,onChange:u,multiple:d=!1,accept:h=p,maxSizeMb:w=m,optional:D=!1,validate:O=!0,error:k,id:A,"data-canvas":j,...M}=r;t(`AppFileAttachment`,M);let N=y(),P=A||N,[F,I]=b(``),[L,R]=b(!1),z=d&&Array.isArray(c)?c:c?[c]:[],B=_(h),V=e=>e instanceof File?g(e):B||g(e),H=!d&&z.length===1&&V(z[0])&&(z[0]instanceof File||o(z[0])!==null),U=T(h,w);function W(e){if(!e.length)return;let t=[],n=``;for(let r of e){let e=O?v(r,{accept:h,maxSizeMb:w}):null;if(e){n||=e;continue}t.push(r)}if(I(n),t.length)if(d){let e=Array.isArray(c)?c:c?[c]:[],n=new Set(e.map(a)),r=e.concat(t.filter(e=>!n.has(a(e))));u(r)}else u(t[0])}function G(e){let t=Array.from(e.target.files||[]);e.target.value=``,W(t)}function K(e){I(``),u(d?z.filter((t,n)=>n!==e):null)}let q=k||F,J=q?`${P}-error`:void 0,Y=d||z.length===0,X=B?`image`:`file`,Z=d?`Add ${X}s`:`Add ${B?`an`:`a`} ${X}`;return C(`div`,{...e(`AppFileAttachment`,r),className:`field`,children:[C(`label`,{className:`label`,htmlFor:P,children:[s,D&&S(`span`,{className:`label-optional`,children:` (optional)`})]}),Y&&C(x,{children:[C(`label`,{className:`attach-drop${L?` dragging`:``}`,htmlFor:P,onDragEnter:e=>{e.preventDefault(),M.disabled||R(!0)},onDragOver:e=>{e.preventDefault(),M.disabled||R(!0)},onDragLeave:e=>{e.preventDefault(),R(!1)},onDrop:e=>{e.preventDefault(),R(!1),!M.disabled&&W(Array.from(e.dataTransfer?.files||[]))},children:[S(`span`,{className:`attach-drop-icon`,children:S(n,{name:B?`image`:`file-text`,size:18})}),C(`span`,{className:`attach-drop-copy`,children:[S(`span`,{className:`attach-drop-title`,children:Z}),U&&S(`span`,{className:`attach-drop-hint`,children:U})]}),S(`span`,{className:`attach-drop-cta`,children:`Browse`})]}),S(`input`,{id:P,type:`file`,className:`visually-hidden`,name:l,accept:h||void 0,multiple:d||void 0,"aria-describedby":J,onChange:G,...M})]}),H?S(E,{item:z[0],isImage:!0,onRemove:()=>K(0)}):z.length>0&&S(`div`,{className:`attach-list`,children:z.map((e,t)=>S(f,{item:e,isImage:V(e),onRemove:()=>K(t)},a(e)))}),S(i,{error:q,errorId:`${P}-error`})]})}function T(e,t){let n=e?.trim()?h(e):``,r=t>0?`up to ${t} MB`:``;return n&&r?`${n}, ${r}`:r?`Up to ${t} MB`:n}function E({item:e,isImage:t,onRemove:i}){let a=d(e,t),f=s(e),p=c(e),m=u(e),h=l(e),g=o(e);return C(`div`,{className:h?`attach-preview wui-attach-failed`:`attach-preview`,children:[C(`div`,{className:`attach-figure`,children:[S(`img`,{src:a,alt:f}),S(`button`,{type:`button`,className:`attach-remove`,"aria-label":`Remove attachment`,onClick:i,children:S(n,{name:`x`,size:18})})]}),C(`div`,{className:`attach-meta`,children:[S(`div`,{className:`attach-name`,children:g?S(`a`,{href:g,children:f}):f}),p&&S(`div`,{className:`attach-size`,children:p})]}),m!==null&&S(r,{value:m,size:`sm`,label:`Uploading ${f}`,className:`wui-attach-progress`}),h&&S(`div`,{className:`wui-attach-error`,children:h})]})}export{w as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"./AppProgress.js";import i from"../lib/FieldMessage.js";import a from"../lib/useFileDrop.js";import{keyOf as o,linkOf as s,nameOf as c,sizeLabelOf as l,uploadErrorOf as u,uploadProgressOf as d,useItemUrl as f}from"../lib/fileItem.js";import p from"../lib/FileItemRow.js";import{DEFAULT_IMAGE_ACCEPT as m,DEFAULT_MAX_SIZE_MB as h,acceptDroppedFiles as g,acceptLabel as _,isImageFile as v,isImageOnlyAccept as y}from"@webority/ui-elements/helpers";import{useId as b,useState as ee}from"react";import{Fragment as x,jsx as S,jsxs as C}from"react/jsx-runtime";function w(r){let{marker:c,props:l}=e(`AppFileAttachment`,r),{label:u=`Attachment`,value:d,name:f,onChange:_,multiple:w=!1,accept:D=m,maxSizeMb:O=h,optional:k=!1,validate:A=!0,error:j,id:M,...N}=l;t(`AppFileAttachment`,N);let P=b(),F=M||P,[I,L]=ee(``),R=w&&Array.isArray(d)?d:d?[d]:[],z=y(D),B=e=>e instanceof File?v(e):z||v(e),V=!w&&R.length===1&&B(R[0])&&(R[0]instanceof File||s(R[0])!==null),H=T(D,O),U=A?{accept:D,maxSizeMb:O,multiple:w}:{accept:``,maxSizeMb:0,multiple:w};function W(e){if(L(``),w){let t=Array.isArray(d)?d:d?[d]:[],n=new Set(t.map(o)),r=t.concat(e.filter(e=>!n.has(o(e))));_(r)}else _(e[0])}function G(e){if(!e.length)return;let{files:t,rejections:n}=g(e,U);t.length&&W(t),L(n[0]?.message??``)}let{dragOver:K,dropProps:q}=a({...U,disabled:N.disabled,onFiles:W,onReject:e=>L(e.message)});function J(e){let t=Array.from(e.target.files||[]);e.target.value=``,G(t)}function Y(e){L(``),_(w?R.filter((t,n)=>n!==e):null)}let X=j||I,Z=X?`${F}-error`:void 0,Q=w||R.length===0,$=z?`image`:`file`,te=w?`Add ${$}s`:`Add ${z?`an`:`a`} ${$}`;return C(`div`,{...c,className:`field`,children:[C(`label`,{className:`label`,htmlFor:F,children:[u,k&&S(`span`,{className:`label-optional`,children:` (optional)`})]}),Q&&C(x,{children:[C(`label`,{className:`attach-drop${K?` dragging`:``}`,htmlFor:F,...q,children:[S(`span`,{className:`attach-drop-icon`,children:S(n,{name:z?`image`:`file-text`,size:18})}),C(`span`,{className:`attach-drop-copy`,children:[S(`span`,{className:`attach-drop-title`,children:te}),H&&S(`span`,{className:`attach-drop-hint`,children:H})]}),S(`span`,{className:`attach-drop-cta`,children:`Browse`})]}),S(`input`,{id:F,type:`file`,className:`visually-hidden`,name:f,accept:D||void 0,multiple:w||void 0,"aria-describedby":Z,onChange:J,...N})]}),V?S(E,{item:R[0],isImage:!0,onRemove:()=>Y(0)}):R.length>0&&S(`div`,{className:`attach-list`,children:R.map((e,t)=>S(p,{item:e,isImage:B(e),onRemove:()=>Y(t)},o(e)))}),S(i,{error:X,errorId:`${F}-error`})]})}function T(e,t){let n=e?.trim()?_(e):``,r=t>0?`up to ${t} MB`:``;return n&&r?`${n}, ${r}`:r?`Up to ${t} MB`:n}function E({item:e,isImage:t,onRemove:i}){let a=f(e,t),o=c(e),p=l(e),m=d(e),h=u(e),g=s(e);return C(`div`,{className:h?`attach-preview wui-attach-failed`:`attach-preview`,children:[C(`div`,{className:`attach-figure`,children:[S(`img`,{src:a,alt:o}),S(`button`,{type:`button`,className:`attach-remove`,"aria-label":`Remove attachment`,onClick:i,children:S(n,{name:`x`,size:18})})]}),C(`div`,{className:`attach-meta`,children:[S(`div`,{className:`attach-name`,children:g?S(`a`,{href:g,children:o}):o}),p&&S(`div`,{className:`attach-size`,children:p})]}),m!==null&&S(r,{value:m,size:`sm`,label:`Uploading ${o}`,className:`wui-attach-progress`}),h&&S(`div`,{className:`wui-attach-error`,children:h})]})}export{w as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import i from"./withTooltip.js";import a from"./AppIcon.js";import o from"../lib/FieldMessage.js";import ee from"./AppRequiredMark.js";import{keyOf as s}from"../lib/fileItem.js";import te from"../lib/FileItemRow.js";import{DEFAULT_MAX_SIZE_MB as ne,acceptLabel as c,isImageFile as l,isImageOnlyAccept as re,isPdfFile as ie,validateFile as u}from"@webority/ui-elements/helpers";import{useEffect as d,useId as ae,useRef as oe,useState as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";var se=[`dropzone`,`button`];function h(h){let{label:g,value:_,name:ce,id:v,onPick:y,multiple:b=!1,variant:x=`dropzone`,buttonLabel:le=`Add file`,maxFiles:S,accept:C=`.jpg,.jpeg,.png`,maxSizeMb:w=ne,required:ue,error:T,hint:E,loading:D=!1,className:O=``,fieldClassName:k=``,style:A,"data-canvas":de,...j}=h;r(`AppFilePicker`,j),n(`AppFilePicker`,`variant`,x,se);let[fe,M]=f(null),[pe,N]=f(null),[P,F]=f(!1),[me,I]=f(``),L=oe(null),he=ae(),R=v||he;d(()=>{if(!b&&_ instanceof File&&l(_)){let e=URL.createObjectURL(_);return M(e),()=>URL.revokeObjectURL(e)}M(null)},[_,b]);let z=!b&&_&&!l(_)&&ie(_)?_ instanceof File?_:_.url:null;d(()=>{if(!z){N(null);return}let e=!0,n=null;return import(`@webority/ui-elements/file-viewer`).then(e=>e.renderPdfFirstPage(typeof z==`string`?{url:z}:z)).then(t=>{e&&(n=URL.createObjectURL(t),N(n))}).catch(e=>t(`[AppFilePicker] the PDF preview failed:`,e?.message)),()=>{e=!1,N(null),n&&URL.revokeObjectURL(n)}},[z]);let B=b?Array.isArray(_)?_:_?[_]:[]:[],V=T||me,H=V?`${R}-error`:void 0,U=E&&!V?`${R}-hint`:void 0,ge=H||U,W=re(C),_e=x===`button`,G=!b&&!!_,K=G&&(_ instanceof File?l(_):W||l(_)),ve=_?.name,q=K?_?.url||fe:pe,J=K?`image`:`file`,ye=g?`Change ${g}`:`Change ${J}`,Y=g?`Remove ${g}`:`Remove ${J}`,be=g?`${g} preview`:`Selected ${J} preview`,X=e=>{let t=u(e,{accept:C,maxSizeMb:w});return t?(I(t),!1):(I(``),y(e),!0)},Z=e=>{let t=Array.from(e||[]);if(!t.length)return;let n=Array.isArray(_)?_:_?[_]:[],r=new Set(n.map(s)),i=``,a=[];for(let e of t){let t=u(e,{accept:C,maxSizeMb:w});if(t){i||=t;continue}r.has(s(e))||(r.add(s(e)),a.push(e))}let o=n.concat(a);S&&o.length>S&&(o=o.slice(0,S),i||=`Up to ${S} files.`),I(i),y(o)},xe=e=>{if(b){Z(e.target.files);return}let t=e.target.files?.[0]||null;t&&(X(t)||(e.target.value=``))},Se=e=>{if(e.preventDefault(),F(!1),D)return;if(b){Z(e.dataTransfer.files);return}let t=e.dataTransfer.files?.[0];t&&X(t)},Ce=e=>{I(``),y(B.filter((t,n)=>n!==e))},we=()=>L.current?.click(),Q=D?p(`span`,{className:`wui-file-busy`,children:p(`span`,{className:`spinner-border spinner-border-sm`,role:`status`,"aria-label":`Loading`})}):null,$=p(`input`,{id:R,name:ce,ref:L,type:`file`,"aria-describedby":ge,accept:C,multiple:b||void 0,disabled:D||void 0,className:`visually-hidden`,onClick:e=>{e.currentTarget.value=``},onChange:xe,...j});return m(`div`,{...e(`AppFilePicker`,h),className:`field${k?` ${k}`:``}`,children:[m(`label`,{className:`label`,htmlFor:R,children:[g,ue&&p(ee,{})]}),_e?m(`div`,{className:`file-input wui-file-input-button-field${V?` error`:``}${O?` ${O}`:``}`,style:A,"aria-busy":D||void 0,children:[m(`label`,{htmlFor:R,className:`btn btn-outline-primary btn-sm`,children:[p(a,{name:`paperclip`,size:16}),le]}),$,Q]}):G?m(`div`,{className:`file-preview${V?` error`:``}${O?` ${O}`:``}`,style:A,"aria-busy":D||void 0,children:[m(`button`,{type:`button`,className:`file-preview-open`,"aria-label":ye,onClick:we,disabled:D,children:[q?p(`img`,{src:q,alt:be,className:`file-preview-img`}):m(`span`,{className:`file-preview-file`,children:[p(a,{name:`file-text`,size:28}),p(`span`,{className:`file-preview-file-name`,children:ve})]}),p(`span`,{className:`file-preview-overlay`,children:m(`span`,{className:`file-preview-cta`,children:[p(a,{name:K?`image`:`file-text`,size:16}),` `,K?`Change image`:`Change file`]})})]}),i(p(`button`,{type:`button`,className:`file-preview-remove`,"aria-label":Y,onClick:()=>y(null),disabled:D,children:p(a,{name:`x`,size:16})}),Y),$,Q]}):m(`div`,{className:`file-input file-input-tall${P?` dragging`:``}${V?` error`:``}${b&&B.length>0?` has-files`:``}${O?` ${O}`:``}`,style:A,"aria-busy":D||void 0,onDragOver:e=>{e.preventDefault(),!D&&!P&&F(!0)},onDragLeave:e=>{e.preventDefault(),F(!1)},onDrop:Se,children:[m(`label`,{htmlFor:R,className:`file-input-zone-label`,children:[p(`span`,{className:`file-input-icon`,children:p(a,{name:`upload`,size:24})}),m(`span`,{className:`file-input-title`,children:[p(`span`,{className:`browse`,children:`Click to upload`}),` or drag & drop`]}),p(`span`,{className:`file-input-text`,children:w>0?`${c(C)}, up to ${w} MB`:c(C)})]}),$,Q,b&&B.length>0&&p(`div`,{className:`attach-list`,children:B.map((e,t)=>p(te,{item:e,isImage:e instanceof File?l(e):W||l(e),noun:`file`,onRemove:()=>Ce(t)},s(e)))})]}),p(o,{error:V,hint:E,errorId:H,hintId:U})]})}export{h as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import i from"./withTooltip.js";import a from"./AppIcon.js";import ee from"../lib/FieldMessage.js";import te from"./AppRequiredMark.js";import ne from"../lib/useFileDrop.js";import{keyOf as o}from"../lib/fileItem.js";import re from"../lib/FileItemRow.js";import{DEFAULT_MAX_SIZE_MB as ie,acceptDroppedFiles as ae,acceptLabel as s,isImageFile as c,isImageOnlyAccept as oe,isPdfFile as se}from"@webority/ui-elements/helpers";import{useEffect as l,useId as ce,useRef as le,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";var p=[`dropzone`,`button`];function m(m){let{marker:ue,props:h}=e(`AppFilePicker`,m),{label:g,value:_,name:de,id:fe,onPick:v,multiple:y=!1,variant:b=`dropzone`,buttonLabel:pe=`Add file`,maxFiles:x,accept:S=`.jpg,.jpeg,.png`,maxSizeMb:C=ie,required:w,error:me,hint:T,loading:E=!1,className:D=``,fieldClassName:O=``,style:k,...A}=h;r(`AppFilePicker`,A),n(`AppFilePicker`,`variant`,b,p);let[he,j]=u(null),[ge,M]=u(null),[N,P]=u(``),F=le(null),I=ce(),L=fe||I;l(()=>{if(!y&&_ instanceof File&&c(_)){let e=URL.createObjectURL(_);return j(e),()=>URL.revokeObjectURL(e)}j(null)},[_,y]);let R=!y&&_&&!c(_)&&se(_)?_ instanceof File?_:_.url:null;l(()=>{if(!R){M(null);return}let e=!0,n=null;return import(`@webority/ui-elements/file-viewer`).then(e=>e.renderPdfFirstPage(typeof R==`string`?{url:R}:R)).then(t=>{e&&(n=URL.createObjectURL(t),M(n))}).catch(e=>t(`[AppFilePicker] the PDF preview failed:`,e?.message)),()=>{e=!1,M(null),n&&URL.revokeObjectURL(n)}},[R]);let z=y?Array.isArray(_)?_:_?[_]:[]:[],B=me||N,V=B?`${L}-error`:void 0,H=T&&!B?`${L}-hint`:void 0,_e=V||H,U=oe(S),ve=b===`button`,W=!y&&!!_,G=W&&(_ instanceof File?c(_):U||c(_)),ye=_?.name,K=G?_?.url||he:ge,q=G?`image`:`file`,be=g?`Change ${g}`:`Change ${q}`,J=g?`Remove ${g}`:`Remove ${q}`,xe=g?`${g} preview`:`Selected ${q} preview`,Y={accept:S,maxSizeMb:C,multiple:y},X=e=>{if(P(``),!y){v(e[0]);return}let t=Array.isArray(_)?_:_?[_]:[],n=new Set(t.map(o)),r=[];for(let t of e)n.has(o(t))||(n.add(o(t)),r.push(t));let i=t.concat(r);x&&i.length>x&&(i=i.slice(0,x),P(`Up to ${x} files.`)),v(i)},Z=e=>P(e.message),{dragOver:Se,dropProps:Ce}=ne({...Y,disabled:E,onFiles:X,onReject:Z}),we=e=>{let{files:t,rejections:n}=ae(e,Y);t.length&&X(t),n.length&&Z(n[0])},Te=e=>we(e.target.files),Ee=e=>{P(``),v(z.filter((t,n)=>n!==e))},De=()=>F.current?.click(),Q=E?d(`span`,{className:`wui-file-busy`,children:d(`span`,{className:`spinner-border spinner-border-sm`,role:`status`,"aria-label":`Loading`})}):null,$=d(`input`,{id:L,name:de,ref:F,type:`file`,"aria-describedby":_e,accept:S,multiple:y||void 0,disabled:E||void 0,className:`visually-hidden`,onClick:e=>{e.currentTarget.value=``},onChange:Te,...A});return f(`div`,{...ue,className:`field${O?` ${O}`:``}`,children:[f(`label`,{className:`label`,htmlFor:L,children:[g,w&&d(te,{})]}),ve?f(`div`,{className:`file-input wui-file-input-button-field${B?` error`:``}${D?` ${D}`:``}`,style:k,"aria-busy":E||void 0,children:[f(`label`,{htmlFor:L,className:`btn btn-outline-primary btn-sm`,children:[d(a,{name:`paperclip`,size:16}),pe]}),$,Q]}):W?f(`div`,{className:`file-preview${B?` error`:``}${D?` ${D}`:``}`,style:k,"aria-busy":E||void 0,children:[f(`button`,{type:`button`,className:`file-preview-open`,"aria-label":be,onClick:De,disabled:E,children:[K?d(`img`,{src:K,alt:xe,className:`file-preview-img`}):f(`span`,{className:`file-preview-file`,children:[d(a,{name:`file-text`,size:28}),d(`span`,{className:`file-preview-file-name`,children:ye})]}),d(`span`,{className:`file-preview-overlay`,children:f(`span`,{className:`file-preview-cta`,children:[d(a,{name:G?`image`:`file-text`,size:16}),` `,G?`Change image`:`Change file`]})})]}),i(d(`button`,{type:`button`,className:`file-preview-remove`,"aria-label":J,onClick:()=>v(null),disabled:E,children:d(a,{name:`x`,size:16})}),J),$,Q]}):f(`div`,{className:`file-input file-input-tall${Se?` dragging`:``}${B?` error`:``}${y&&z.length>0?` has-files`:``}${D?` ${D}`:``}`,style:k,"aria-busy":E||void 0,...Ce,children:[f(`label`,{htmlFor:L,className:`file-input-zone-label`,children:[d(`span`,{className:`file-input-icon`,children:d(a,{name:`upload`,size:24})}),f(`span`,{className:`file-input-title`,children:[d(`span`,{className:`browse`,children:`Click to upload`}),` or drag & drop`]}),d(`span`,{className:`file-input-text`,children:C>0?`${s(S)}, up to ${C} MB`:s(S)})]}),$,Q,y&&z.length>0&&d(`div`,{className:`attach-list`,children:z.map((e,t)=>d(re,{item:e,isImage:e instanceof File?c(e):U||c(e),noun:`file`,onRemove:()=>Ee(t)},o(e)))})]}),d(ee,{error:B,hint:T,errorId:V,hintId:H})]})}export{m as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import{sizeLabelOf as n}from"../lib/fileItem.js";import{Fragment as r,jsx as i,jsxs as a}from"react/jsx-runtime";function o(e){let t=e.lastIndexOf(`.`),n=t>0?e.slice(t+1):``;return n.length>0?n.slice(0,4).toUpperCase():`FILE`}function s(e){let t=n({sizeBytes:e.sizeBytes});return t&&e.meta?a(r,{children:[t,` · `,e.meta]}):t||e.meta||null}function c(n){let{label:c,files:l=[],className:u=``,"data-canvas":d,...f}=n;if(t(`AppFileTiles`,f),l.some(e=>!e.name))throw Error(`<AppFileTiles> each file needs a name.`);return i(`ul`,{className:[`wui-file-tiles`,u].filter(Boolean).join(` `),"aria-label":c,...e(`AppFileTiles`,n),...f,children:l.map(e=>{let t=s(e),n=a(r,{children:[i(`span`,{className:`wui-file-tile-ext`,"aria-hidden":`true`,children:o(e.name)}),a(`span`,{className:`wui-file-tile-text`,children:[i(`span`,{className:`wui-file-tile-name`,children:e.name}),t?i(`span`,{className:`wui-file-tile-meta`,children:t}):null]})]});return i(`li`,{children:e.href?i(`a`,{className:`wui-file-tile`,href:e.href,children:n}):i(`div`,{className:`wui-file-tile`,children:n})},e.key)})})}export{c as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import{sizeLabelOf as n}from"../lib/fileItem.js";import{Fragment as r,jsx as i,jsxs as a}from"react/jsx-runtime";function o(e){let t=e.lastIndexOf(`.`),n=t>0?e.slice(t+1):``;return n.length>0?n.slice(0,4).toUpperCase():`FILE`}function s(e){let t=n({sizeBytes:e.sizeBytes});return t&&e.meta?a(r,{children:[t,` · `,e.meta]}):t||e.meta||null}function c(n){let{marker:c,props:l}=e(`AppFileTiles`,n),{label:u,files:d=[],className:f=``,...p}=l;if(t(`AppFileTiles`,p),d.some(e=>!e.name))throw Error(`<AppFileTiles> each file needs a name.`);return i(`ul`,{className:[`wui-file-tiles`,f].filter(Boolean).join(` `),"aria-label":u,...c,...p,children:d.map(e=>{let t=s(e),n=a(r,{children:[i(`span`,{className:`wui-file-tile-ext`,"aria-hidden":`true`,children:o(e.name)}),a(`span`,{className:`wui-file-tile-text`,children:[i(`span`,{className:`wui-file-tile-name`,children:e.name}),t?i(`span`,{className:`wui-file-tile-meta`,children:t}):null]})]});return i(`li`,{children:e.href?i(`a`,{className:`wui-file-tile`,href:e.href,children:n}):i(`div`,{className:`wui-file-tile`,children:n})},e.key)})})}export{c as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import{forwardRef as n,useCallback as r,useEffect as i,useLayoutEffect as a,useRef as o,useState as s}from"react";import{Fragment as c,jsx as l,jsxs as u}from"react/jsx-runtime";import{createPortal as d}from"react-dom";import"@webority/ui-elements/file-viewer";var f=`wui-file-viewer:load`,p=`wui-file-viewer:error`,m=`wui-file-viewer:prefs-change`,h=n(function(n,h){let{src:g,name:_,type:v,prefs:y,onPrefsChange:b,viewKey:x,download:S=!1,print:C=!0,workerSrc:w,assetBase:T,captions:E,actions:D,onLoad:O,onError:k,className:A=``,style:j,...M}=n;t(`AppFileViewer`,M);let N=o(null),P=o(O),F=o(k),I=o(b),[L,R]=s(null),z=r(e=>{N.current=e,typeof h==`function`?h(e):h&&(h.current=e)},[h]);a(()=>{y!==void 0&&(N.current.prefs=y)},[y]),i(()=>{P.current=O,F.current=k,I.current=b}),i(()=>{let e=N.current,t=e=>P.current?.(e.detail),n=e=>F.current?.(e.detail),r=e=>I.current?.(e.detail);return e.addEventListener(f,t),e.addEventListener(p,n),e.addEventListener(m,r),()=>{e.removeEventListener(f,t),e.removeEventListener(p,n),e.removeEventListener(m,r)}},[]),i(()=>{let e=N.current;e?.isConnected&&R(e.actionsContainer)},[]);let B=j&&j.height!==void 0&&j.minHeight===void 0?{...j,minHeight:0}:j;return u(c,{children:[l(`wui-file-viewer`,{ref:z,src:g,name:_||void 0,type:v||void 0,"view-key":x||void 0,download:S?``:void 0,print:C?void 0:`false`,"worker-src":w||void 0,"asset-base":T||void 0,captions:E||void 0,className:A||void 0,style:B,...e(`AppFileViewer`,n),...M}),L&&D!=null&&d(l(`div`,{slot:`actions`,className:`wui-file-viewer-slot`,children:D}),L)]})});export{h as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import{forwardRef as n,useCallback as r,useEffect as i,useLayoutEffect as a,useRef as o,useState as s}from"react";import{Fragment as c,jsx as l,jsxs as u}from"react/jsx-runtime";import{createPortal as d}from"react-dom";import"@webority/ui-elements/file-viewer";var f=`wui-file-viewer:load`,p=`wui-file-viewer:error`,m=`wui-file-viewer:prefs-change`,h=n(function(n,h){let{marker:g,props:_}=e(`AppFileViewer`,n),{src:v,name:y,type:b,prefs:x,onPrefsChange:S,viewKey:C,download:w=!1,print:T=!0,workerSrc:E,assetBase:D,captions:O,actions:k,onLoad:A,onError:j,className:M=``,style:N,...P}=_;t(`AppFileViewer`,P);let F=o(null),I=o(A),L=o(j),R=o(S),[z,B]=s(null),V=r(e=>{F.current=e,typeof h==`function`?h(e):h&&(h.current=e)},[h]);a(()=>{x!==void 0&&(F.current.prefs=x)},[x]),i(()=>{I.current=A,L.current=j,R.current=S}),i(()=>{let e=F.current,t=e=>I.current?.(e.detail),n=e=>L.current?.(e.detail),r=e=>R.current?.(e.detail);return e.addEventListener(f,t),e.addEventListener(p,n),e.addEventListener(m,r),()=>{e.removeEventListener(f,t),e.removeEventListener(p,n),e.removeEventListener(m,r)}},[]),i(()=>{let e=F.current;e?.isConnected&&B(e.actionsContainer)},[]);let H=N&&N.height!==void 0&&N.minHeight===void 0?{...N,minHeight:0}:N;return u(c,{children:[l(`wui-file-viewer`,{ref:V,src:v,name:y||void 0,type:b||void 0,"view-key":C||void 0,download:w?``:void 0,print:T?void 0:`false`,"worker-src":E||void 0,"asset-base":D||void 0,captions:O||void 0,className:M||void 0,style:H,...g,...P}),z&&k!=null&&d(l(`div`,{slot:`actions`,className:`wui-file-viewer-slot`,children:k}),z)]})});export{h as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import i from"./AppIcon.js";import a from"./AppButton.js";import o from"./AppSegmented.js";import ee from"./AppChip.js";import s from"./AppDateRangePicker.js";import{emptyFacetValue as c,isFacetActive as l}from"../lib/listQuery.js";import u from"./AppMultiSelect.js";import d from"./AppSearch.js";import f from"./AppSelect.js";import te from"./AppSwitch.js";import{Fragment as ne,useEffect as p,useId as re,useRef as m,useState as ie,useSyncExternalStore as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import"@webority/ui-elements/elements/filter-popover";var y=`(max-width: 575.98px)`,ae=3,b=2,x=e=>{let t=window.matchMedia?.(y);return t?.addEventListener(`change`,e),()=>t?.removeEventListener(`change`,e)},S=()=>window.matchMedia?.(y).matches??!1,C=[`enum`,`multiEnum`,`dateRange`,`text`],w=4,oe=e=>(e.type===`enum`||e.type===`multiEnum`)&&!e.options?.length,T=(e,t)=>e.options?.find(e=>e.value===t)?.label??t,se=(e,t)=>JSON.stringify(e)===JSON.stringify(t);function ce(e,t){if(!l(e,t))return[];if(e.type===`enum`)return[{id:e.key,text:T(e,t),clear:()=>c(e)}];if(e.type===`multiEnum`)return t.map(n=>({id:`${e.key}:${n}`,text:T(e,n),clear:()=>t.filter(e=>e!==n)}));if(e.type===`dateRange`){let n=t.from&&t.to?`${t.from} to ${t.to}`:t.from?`From ${t.from}`:`Until ${t.to}`;return[{id:e.key,text:n,clear:()=>c(e)}]}return[]}var E=new Set;function D(e){let n=!0;try{n=process.env.NODE_ENV!==`production`}catch{n=!0}!n||E.has(e)||(E.add(e),t(`[@webority/ui-react] <AppFilterBar> facet "${e}" sets allLabel, which only an enum facet uses.`))}var O=new Set;function le(e){let n=!0;try{n=process.env.NODE_ENV!==`production`}catch{n=!0}!n||O.has(e)||(O.add(e),t(`[@webority/ui-react] <AppFilterBar> facet "${e}" sets presets, which only a dateRange facet uses.`))}function k(t){let{facets:o,value:s,onChange:u,inline:d=ae,floating:f=!1,apply:y=!1,className:w=``,...T}=t;r(`AppFilterBar`,T);let E=h(x,S,()=>!1),O=m(null),k=re(),[j,M]=ie({}),N=m(s);for(let e of o)n(`AppFilterBar`,`facets[].type`,e.type,C);for(let e of o)e.allLabel!=null&&e.type!==`enum`&&D(e.key),e.presets!=null&&e.type!==`dateRange`&&le(e.key);let P=o.filter(e=>!oe(e)),F=P.flatMap(e=>ce(e,s[e.key]).map(t=>({...t,facet:e}))),I=P.filter(e=>l(e,s[e.key])),L=f||E?0:Math.max(0,d),R=P.slice(L),z=R.filter(e=>I.includes(e)).length,B=!f&&R.length>0;p(()=>{if(!B)return;let e=e=>{let t=O.current;t?.open&&(e.type===`keydown`?e.key===`Escape`:!e.composedPath().includes(t))&&(t.open=!1)};return document.addEventListener(`click`,e),document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`click`,e),document.removeEventListener(`keydown`,e)}},[B]),p(()=>{let e=N.current;N.current=s,M(t=>{let n=Object.entries(t).filter(([t])=>se(e[t],s[t]));return n.length===Object.keys(t).length?t:Object.fromEntries(n)})},[s]);let V=e=>y&&!f&&(e.type===`text`||e.type===`dateRange`),H=e=>V(e)&&Object.hasOwn(j,e.key)?j[e.key]:s[e.key],U=e=>t=>V(e)?M(n=>({...n,[e.key]:t})):u(e.key,t),W=()=>{for(let[e,t]of Object.entries(j))u(e,t);M({})},ue=e=>{e.key===`Enter`&&W()},G=e=>{e.preventDefault(),W()},K=(e,t)=>e.type===`text`&&V(e)?_(`span`,{onKeyDownCapture:ue,children:t}):t,de=e=>_(ne,{children:K(e,_(A,{facet:e,value:H(e),onChange:U(e)}))},e.key),q=e=>v(`div`,{className:`wui-filter-popover-field`,children:[_(`span`,{className:`label`,"aria-hidden":`true`,children:e.label}),K(e,_(A,{facet:e,value:H(e),onChange:U(e),floating:!0}))]},e.key),J=(e,t)=>t>0&&_(`span`,{className:e,children:` (${t})`}),Y=e=>_(ee,{size:`sm`,label:`${e.facet.label}: ${e.text}`,removeLabel:`Remove ${e.facet.label} filter ${e.text}`,onRemove:()=>u(e.facet.key,e.clear()),className:!f&&P.indexOf(e.facet)<L?`wui-filter-chip-inline`:void 0},e.id),X=_(a,{variant:`ghost`,size:`sm`,onClick:()=>{for(let e of I)u(e.key,c(e));M({})},children:`Clear all`});if(f){let n=F.slice(b),r=I.length;return v(`div`,{className:`wui-filter-bar d-flex flex-wrap align-items-center gap-2${w?` ${w}`:``}`,...e(`AppFilterBar`,t),...T,children:[v(`wui-filter-popover`,{class:`wui-filter-popover`,children:[v(`button`,{type:`button`,className:`btn ${r>0?`btn-outline-primary`:`btn-ghost`} btn-sm wui-filter-popover-trigger`,"aria-expanded":`false`,"aria-controls":k,"aria-label":r>0?`Filters, ${r} active`:void 0,children:[_(i,{name:`filter`,size:14,className:`me-2`}),`Filters`,r>0&&_(`span`,{className:`badge rounded-pill text-bg-primary ms-1`,children:r})]}),v(`div`,{id:k,className:`wui-filter-popover-panel`,role:`dialog`,"aria-label":`Filters`,hidden:!0,children:[v(`div`,{className:`wui-filter-popover-head`,children:[_(`span`,{className:`wui-filter-popover-title`,children:`Filters`}),_(te,{label:`Keep open`,id:`${k}-pin`})]}),_(`div`,{className:`wui-filter-popover-grid`,children:P.map(q)}),v(`div`,{className:`wui-filter-popover-foot`,children:[_(`span`,{className:`wui-filter-popover-note`,children:`Changes apply at once.`}),r>0&&X]})]})]}),F.slice(0,b).map(Y),n.length>0&&v(`span`,{className:`chip chip-sm wui-filter-popover-more`,title:n.map(e=>`${e.facet.label}: ${e.text}`).join(`, `),children:[`+`,n.length]})]})}let Z=`wui-filter-bar d-flex flex-wrap align-items-center gap-2${E&&B?` wui-filter-bar--folded`:``}`,Q=e=>`${e}${w?` ${w}`:``}`,$=v(g,{children:[P.slice(0,L).map(de),B&&v(`details`,{ref:O,className:`wui-filter-more`,children:[v(`summary`,{className:`btn btn-outline-primary btn-sm wui-filter-more-trigger`,children:[_(i,{name:`filter`,size:14,className:`me-2`}),`Filters`,J(`wui-filter-count-desktop`,z),J(`wui-filter-count-phone`,I.length)]}),v(`div`,{className:`wui-filter-more-panel`,children:[_(`div`,{className:`wui-filter-more-head`,children:`Filters`}),R.map(q)]})]}),F.map(Y),I.length>0&&X]});return!y||!P.some(e=>e.type===`text`||e.type===`dateRange`)?_(`div`,{className:Q(Z),...e(`AppFilterBar`,t),...T,children:$}):v(`div`,{className:Q(`wui-filter-form d-flex flex-wrap align-items-center gap-2`),...e(`AppFilterBar`,t),...T,children:[_(`div`,{className:Z,children:$}),_(a,{type:`submit`,size:`sm`,onClick:G,children:`Apply`})]})}function A({facet:e,value:t,onChange:n,floating:r=!1}){if(e.type===`enum`){let i=e.options??[];return i.length<w?_(o,{label:e.label,name:e.key,size:`sm`,value:t??``,onChange:n,options:[{value:``,label:e.allLabel||`All`},...i]}):_(f,{"aria-label":e.label,name:e.key,placeholder:r?`Any`:e.label,size:`sm`,clearable:!0,value:t??``,onChange:n,options:i})}return e.type===`multiEnum`?_(u,{"aria-label":e.label,name:e.key,placeholder:r?`Any`:e.label,size:`sm`,collapseChips:!0,values:t??[],onChange:n,options:e.options??[]}):e.type===`dateRange`?_(s,{ariaLabel:e.label,startName:`${e.key}From`,endName:`${e.key}To`,placeholder:r?`Any`:e.label,size:`sm`,presets:e.presets,start:t?.from??``,end:t?.to??``,onChange:e=>n({from:e.start??``,to:e.end??``})}):_(d,{ariaLabel:e.label,name:e.key,placeholder:e.label,size:`sm`,value:t??``,onChange:n})}export{k as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import i from"./AppIcon.js";import a from"./AppButton.js";import o from"./AppSegmented.js";import ee from"./AppChip.js";import s from"./AppSelect.js";import c from"./AppDateRangePicker.js";import{emptyFacetValue as l,isFacetActive as u}from"../lib/listQuery.js";import d from"./AppMultiSelect.js";import f from"./AppSearch.js";import te from"./AppSwitch.js";import{Fragment as ne,useEffect as p,useId as re,useRef as m,useState as h,useSyncExternalStore as ie}from"react";import{Fragment as ae,jsx as g,jsxs as _}from"react/jsx-runtime";import"@webority/ui-elements/elements/filter-popover";var v=`(max-width: 575.98px)`,oe=3,y=2,b=e=>{let t=window.matchMedia?.(v);return t?.addEventListener(`change`,e),()=>t?.removeEventListener(`change`,e)},x=()=>window.matchMedia?.(v).matches??!1,S=[`enum`,`multiEnum`,`dateRange`,`text`],C=4,se=e=>(e.type===`enum`||e.type===`multiEnum`)&&!e.options?.length,w=(e,t)=>e.options?.find(e=>e.value===t)?.label??t,ce=(e,t)=>JSON.stringify(e)===JSON.stringify(t);function le(e,t){if(!u(e,t))return[];if(e.type===`enum`)return[{id:e.key,text:w(e,t),clear:()=>l(e)}];if(e.type===`multiEnum`)return t.map(n=>({id:`${e.key}:${n}`,text:w(e,n),clear:()=>t.filter(e=>e!==n)}));if(e.type===`dateRange`){let n=t.from&&t.to?`${t.from} to ${t.to}`:t.from?`From ${t.from}`:`Until ${t.to}`;return[{id:e.key,text:n,clear:()=>l(e)}]}return[]}var T=new Set;function ue(e){let n=!0;try{n=process.env.NODE_ENV!==`production`}catch{n=!0}!n||T.has(e)||(T.add(e),t(`[@webority/ui-react] <AppFilterBar> facet "${e}" sets allLabel, which only an enum facet uses.`))}var E=new Set;function de(e){let n=!0;try{n=process.env.NODE_ENV!==`production`}catch{n=!0}!n||E.has(e)||(E.add(e),t(`[@webority/ui-react] <AppFilterBar> facet "${e}" sets presets, which only a dateRange facet uses.`))}function D(t){let{marker:o,props:s}=e(`AppFilterBar`,t),{facets:c,value:d,onChange:f,inline:v=oe,floating:C=!1,apply:w=!1,className:T=``,...E}=s;r(`AppFilterBar`,E);let D=ie(b,x,()=>!1),k=m(null),A=re(),[j,M]=h({}),N=m(d);for(let e of c)n(`AppFilterBar`,`facets[].type`,e.type,S);for(let e of c)e.allLabel!=null&&e.type!==`enum`&&ue(e.key),e.presets!=null&&e.type!==`dateRange`&&de(e.key);let P=c.filter(e=>!se(e)),F=P.flatMap(e=>le(e,d[e.key]).map(t=>({...t,facet:e}))),I=P.filter(e=>u(e,d[e.key])),L=C||D?0:Math.max(0,v),R=P.slice(L),z=R.filter(e=>I.includes(e)).length,B=!C&&R.length>0;p(()=>{if(!B)return;let e=e=>{let t=k.current;t?.open&&(e.type===`keydown`?e.key===`Escape`:!e.composedPath().includes(t))&&(t.open=!1)};return document.addEventListener(`click`,e),document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`click`,e),document.removeEventListener(`keydown`,e)}},[B]),p(()=>{let e=N.current;N.current=d,M(t=>{let n=Object.entries(t).filter(([t])=>ce(e[t],d[t]));return n.length===Object.keys(t).length?t:Object.fromEntries(n)})},[d]);let V=e=>w&&!C&&(e.type===`text`||e.type===`dateRange`),H=e=>V(e)&&Object.hasOwn(j,e.key)?j[e.key]:d[e.key],U=e=>t=>V(e)?M(n=>({...n,[e.key]:t})):f(e.key,t),W=()=>{for(let[e,t]of Object.entries(j))f(e,t);M({})},G=e=>{e.key===`Enter`&&W()},fe=e=>{e.preventDefault(),W()},K=(e,t)=>e.type===`text`&&V(e)?g(`span`,{onKeyDownCapture:G,children:t}):t,pe=e=>g(ne,{children:K(e,g(O,{facet:e,value:H(e),onChange:U(e)}))},e.key),q=e=>_(`div`,{className:`wui-filter-popover-field`,children:[g(`span`,{className:`label`,"aria-hidden":`true`,children:e.label}),K(e,g(O,{facet:e,value:H(e),onChange:U(e),floating:!0}))]},e.key),J=(e,t)=>t>0&&g(`span`,{className:e,children:` (${t})`}),Y=e=>g(ee,{size:`sm`,label:`${e.facet.label}: ${e.text}`,removeLabel:`Remove ${e.facet.label} filter ${e.text}`,onRemove:()=>f(e.facet.key,e.clear()),className:!C&&P.indexOf(e.facet)<L?`wui-filter-chip-inline`:void 0},e.id),X=g(a,{variant:`ghost`,size:`sm`,onClick:()=>{for(let e of I)f(e.key,l(e));M({})},children:`Clear all`});if(C){let e=F.slice(y),t=I.length;return _(`div`,{className:`wui-filter-bar d-flex flex-wrap align-items-center gap-2${T?` ${T}`:``}`,...o,...E,children:[_(`wui-filter-popover`,{class:`wui-filter-popover`,children:[_(`button`,{type:`button`,className:`btn ${t>0?`btn-outline-primary`:`btn-ghost`} btn-sm wui-filter-popover-trigger`,"aria-expanded":`false`,"aria-controls":A,"aria-label":t>0?`Filters, ${t} active`:void 0,children:[g(i,{name:`filter`,size:14,className:`me-2`}),`Filters`,t>0&&g(`span`,{className:`badge rounded-pill text-bg-primary ms-1`,children:t})]}),_(`div`,{id:A,className:`wui-filter-popover-panel`,role:`dialog`,"aria-label":`Filters`,hidden:!0,children:[_(`div`,{className:`wui-filter-popover-head`,children:[g(`span`,{className:`wui-filter-popover-title`,children:`Filters`}),g(te,{label:`Keep open`,id:`${A}-pin`})]}),g(`div`,{className:`wui-filter-popover-grid`,children:P.map(q)}),_(`div`,{className:`wui-filter-popover-foot`,children:[g(`span`,{className:`wui-filter-popover-note`,children:`Changes apply at once.`}),t>0&&X]})]})]}),F.slice(0,y).map(Y),e.length>0&&_(`span`,{className:`chip chip-sm wui-filter-popover-more`,title:e.map(e=>`${e.facet.label}: ${e.text}`).join(`, `),children:[`+`,e.length]})]})}let Z=`wui-filter-bar d-flex flex-wrap align-items-center gap-2${D&&B?` wui-filter-bar--folded`:``}`,Q=e=>`${e}${T?` ${T}`:``}`,$=_(ae,{children:[P.slice(0,L).map(pe),B&&_(`details`,{ref:k,className:`wui-filter-more`,children:[_(`summary`,{className:`btn btn-outline-primary btn-sm wui-filter-more-trigger`,children:[g(i,{name:`filter`,size:14,className:`me-2`}),`Filters`,J(`wui-filter-count-desktop`,z),J(`wui-filter-count-phone`,I.length)]}),_(`div`,{className:`wui-filter-more-panel`,children:[g(`div`,{className:`wui-filter-more-head`,children:`Filters`}),R.map(q)]})]}),F.map(Y),I.length>0&&X]});return!w||!P.some(e=>e.type===`text`||e.type===`dateRange`)?g(`div`,{className:Q(Z),...o,...E,children:$}):_(`div`,{className:Q(`wui-filter-form d-flex flex-wrap align-items-center gap-2`),...o,...E,children:[g(`div`,{className:Z,children:$}),g(a,{type:`submit`,size:`sm`,onClick:fe,children:`Apply`})]})}function O({facet:e,value:t,onChange:n,floating:r=!1}){if(e.type===`enum`){let i=e.options??[];return i.length<C?g(o,{label:e.label,name:e.key,size:`sm`,value:t??``,onChange:n,options:[{value:``,label:e.allLabel||`All`},...i]}):g(s,{"aria-label":e.label,name:e.key,placeholder:r?`Any`:e.label,size:`sm`,clearable:!0,value:t??``,onChange:n,options:i})}return e.type===`multiEnum`?g(d,{"aria-label":e.label,name:e.key,placeholder:r?`Any`:e.label,size:`sm`,collapseChips:!0,values:t??[],onChange:n,options:e.options??[]}):e.type===`dateRange`?g(c,{ariaLabel:e.label,startName:`${e.key}From`,endName:`${e.key}To`,placeholder:r?`Any`:e.label,size:`sm`,presets:e.presets,start:t?.from??``,end:t?.to??``,onChange:e=>n({from:e.start??``,to:e.end??``})}):g(f,{ariaLabel:e.label,name:e.key,placeholder:e.label,size:`sm`,value:t??``,onChange:n})}export{D as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"./renderIconProp.js";import{Fragment as r,jsx as i,jsxs as a}from"react/jsx-runtime";import"@webority/ui-elements/elements/dock";function o(o){let{items:s=[],linkComponent:c,ariaLabel:l=`Quick navigation`,magnify:u=!0,maxScale:d,radius:f,className:p=``,...m}=o;return t(`AppFloatingDock`,m),i(`wui-dock`,{role:`navigation`,"aria-label":l,static:u?void 0:``,"max-scale":d??void 0,radius:f??void 0,class:p||void 0,...e(`AppFloatingDock`,o),...m,children:s.map((e,t)=>{let o=e.key??`${e.title}-${t}`,s=a(r,{children:[i(`span`,{className:`dock-item-tip`,"aria-hidden":`true`,children:e.title}),i(`span`,{className:`dock-item-icon`,children:n(e.icon,{size:18})})]});if(e.to&&c)return i(c,{className:`dock-item`,to:e.to,"aria-label":e.title,children:s},o);let l=e.href??e.to;return l?i(`a`,{className:`dock-item`,href:l,"aria-label":e.title,children:s},o):i(`button`,{type:`button`,className:`dock-item`,onClick:e.onClick,"aria-label":e.title,children:s},o)})})}export{o as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"./renderIconProp.js";import{Fragment as r,jsx as i,jsxs as a}from"react/jsx-runtime";import"@webority/ui-elements/elements/dock";function o(o){let{marker:s,props:c}=e(`AppFloatingDock`,o),{items:l=[],linkComponent:u,ariaLabel:d=`Quick navigation`,magnify:f=!0,maxScale:p,radius:m,className:h=``,...g}=c;return t(`AppFloatingDock`,g),i(`wui-dock`,{role:`navigation`,"aria-label":d,static:f?void 0:``,"max-scale":p??void 0,radius:m??void 0,class:h||void 0,...s,...g,children:l.map((e,t)=>{let o=e.key??`${e.title}-${t}`,s=a(r,{children:[i(`span`,{className:`dock-item-tip`,"aria-hidden":`true`,children:e.title}),i(`span`,{className:`dock-item-icon`,children:n(e.icon,{size:18})})]});if(e.to&&u)return i(u,{className:`dock-item`,to:e.to,"aria-label":e.title,children:s},o);let c=e.href??e.to;return c?i(`a`,{className:`dock-item`,href:c,"aria-label":e.title,children:s},o):i(`button`,{type:`button`,className:`dock-item`,onClick:e.onClick,"aria-label":e.title,children:s},o)})})}export{o as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{jsx as r}from"react/jsx-runtime";var i=[`end`,`start`,`between`];function a(a){let{children:o,sticky:s=!1,align:c=`end`,className:l=``,...u}=a;return n(`AppFormActions`,u),t(`AppFormActions`,`align`,c,i),r(`div`,{className:[`form-actions`,s?`form-actions-sticky`:``,c&&c!==`end`?`form-actions-${c}`:``,l].filter(Boolean).join(` `),...e(`AppFormActions`,a),...u,children:o})}export{a as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{jsx as r}from"react/jsx-runtime";var i=[`end`,`start`,`between`];function a(a){let{marker:o,props:s}=e(`AppFormActions`,a),{children:c,sticky:l=!1,align:u=`end`,className:d=``,...f}=s;return n(`AppFormActions`,f),t(`AppFormActions`,`align`,u,i),r(`div`,{className:[`form-actions`,l?`form-actions-sticky`:``,u&&u!==`end`?`form-actions-${u}`:``,d].filter(Boolean).join(` `),...o,...f,children:c})}export{a as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{jsx as r}from"react/jsx-runtime";var i=[1,2,3,4,5,6,7,8,9,10,11,12];function a(a){let{children:o,columns:s=2,collapse:c=!0,className:l=``,...u}=a;n(`AppFormRow`,u),t(`AppFormRow`,`columns`,s,i);let{style:d,...f}=u;return r(`div`,{className:[`form-row-grid`,`wui-form-cols-${Math.min(12,Math.max(1,Number(s)||2))}`,c===!1&&`wui-form-row-keep`,l].filter(Boolean).join(` `),style:d,...e(`AppFormRow`,a),...f,children:o})}export{a as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{jsx as r}from"react/jsx-runtime";var i=[1,2,3,4,5,6,7,8,9,10,11,12];function a(a){let{marker:o,props:s}=e(`AppFormRow`,a),{children:c,columns:l=2,collapse:u=!0,className:d=``,...f}=s;n(`AppFormRow`,f),t(`AppFormRow`,`columns`,l,i);let{style:p,...m}=f;return r(`div`,{className:[`form-row-grid`,`wui-form-cols-${Math.min(12,Math.max(1,Number(l)||2))}`,u===!1&&`wui-form-row-keep`,d].filter(Boolean).join(` `),style:p,...o,...m,children:c})}export{a as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{jsx as r,jsxs as i}from"react/jsx-runtime";var a=[`stacked`,`side`],o=[`top`,`start`],s=[`comfortable`,`compact`],c=[2,3,4],l=[`body`,`display`],u=[`line`,`none`];function d(d){let{children:f,title:p,description:m,layout:h=`stacked`,labels:g=`top`,density:_=`comfortable`,headingLevel:v=3,titleFont:y=`body`,titleSize:b,rule:x=`line`,className:S=``,...C}=d;n(`AppFormSection`,C);let{style:w,...T}=C;t(`AppFormSection`,`layout`,h,a),t(`AppFormSection`,`labels`,g,o),t(`AppFormSection`,`density`,_,s),t(`AppFormSection`,`headingLevel`,v,c),t(`AppFormSection`,`titleFont`,y,l),t(`AppFormSection`,`rule`,x,u);let E=c.includes(v)?`h${v}`:`h3`;return i(`section`,{className:[`form-section`,h===`side`?`wui-form-side`:``,g===`start`?`wui-form-labels-start`:``,_===`compact`?`wui-form-compact`:``,y===`display`?`wui-form-title-display`:``,x===`none`?`wui-form-rule-none`:``,S].filter(Boolean).join(` `),style:b==null&&w===void 0?void 0:{"--wui-form-title-size":b==null?void 0:`${b}px`,...w},...e(`AppFormSection`,d),...T,children:[(p!=null||m!=null)&&i(`div`,{className:`form-section-head`,children:[p!=null&&r(E,{className:`form-section-title`,children:p}),m!=null&&r(`p`,{className:`form-section-desc`,children:m})]}),r(`div`,{className:`form-section-body`,children:f})]})}export{d as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{jsx as r,jsxs as i}from"react/jsx-runtime";var a=[`stacked`,`side`],o=[`top`,`start`],s=[`comfortable`,`compact`],c=[2,3,4],l=[`body`,`display`],u=[`line`,`none`];function d(d){let{marker:f,props:p}=e(`AppFormSection`,d),{children:m,title:h,description:g,layout:_=`stacked`,labels:v=`top`,density:y=`comfortable`,headingLevel:b=3,titleFont:x=`body`,titleSize:S,rule:C=`line`,className:w=``,...T}=p;n(`AppFormSection`,T);let{style:E,...D}=T;t(`AppFormSection`,`layout`,_,a),t(`AppFormSection`,`labels`,v,o),t(`AppFormSection`,`density`,y,s),t(`AppFormSection`,`headingLevel`,b,c),t(`AppFormSection`,`titleFont`,x,l),t(`AppFormSection`,`rule`,C,u);let O=c.includes(b)?`h${b}`:`h3`;return i(`section`,{className:[`form-section`,_===`side`?`wui-form-side`:``,v===`start`?`wui-form-labels-start`:``,y===`compact`?`wui-form-compact`:``,x===`display`?`wui-form-title-display`:``,C===`none`?`wui-form-rule-none`:``,w].filter(Boolean).join(` `),style:S==null&&E===void 0?void 0:{"--wui-form-title-size":S==null?void 0:`${S}px`,...E},...f,...D,children:[(h!=null||g!=null)&&i(`div`,{className:`form-section-head`,children:[h!=null&&r(O,{className:`form-section-title`,children:h}),g!=null&&r(`p`,{className:`form-section-desc`,children:g})]}),r(`div`,{className:`form-section-body`,children:m})]})}export{d as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import{useEffect as n,useRef as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import"@webority/ui-elements/elements/hover-card";function o(o){let{trigger:s,children:c,open:l,loading:u=!1,loadingLabel:d=`Loading`,label:f,openDelay:p,closeDelay:m,onOpenChange:h,className:g=``,..._}=o;t(`AppHoverCard`,_);let v=r(null),y=r(h);return y.current=h,n(()=>{let e=v.current;if(!e)return;let t=()=>y.current?.(!0),n=()=>y.current?.(!1);return e.addEventListener(`wui:hover-card:open`,t),e.addEventListener(`wui:hover-card:close`,n),()=>{e.removeEventListener(`wui:hover-card:open`,t),e.removeEventListener(`wui:hover-card:close`,n)}},[]),a(`wui-hover-card`,{ref:v,class:[`wui-hover-card`,g].filter(Boolean).join(` `),open:l?``:void 0,"open-delay":Number.isFinite(p)?p:void 0,"close-delay":Number.isFinite(m)?m:void 0,...e(`AppHoverCard`,o),..._,children:[i(`span`,{className:`wui-hover-card-trigger`,children:s}),i(`span`,{className:`wui-hover-card-panel`,role:`group`,"aria-label":f||void 0,"aria-busy":u?`true`:void 0,children:u?a(`span`,{className:`wui-hover-card-loading`,role:`status`,children:[i(`span`,{className:`wui-spinner wui-spinner-sm`,"aria-hidden":`true`}),i(`span`,{children:d})]}):c})]})}export{o as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import{useEffect as n,useRef as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import"@webority/ui-elements/elements/hover-card";function o(o){let{marker:s,props:c}=e(`AppHoverCard`,o),{trigger:l,children:u,open:d,loading:f=!1,loadingLabel:p=`Loading`,label:m,openDelay:h,closeDelay:g,onOpenChange:_,className:v=``,...y}=c;t(`AppHoverCard`,y);let b=r(null),x=r(_);return x.current=_,n(()=>{let e=b.current;if(!e)return;let t=()=>x.current?.(!0),n=()=>x.current?.(!1);return e.addEventListener(`wui:hover-card:open`,t),e.addEventListener(`wui:hover-card:close`,n),()=>{e.removeEventListener(`wui:hover-card:open`,t),e.removeEventListener(`wui:hover-card:close`,n)}},[]),a(`wui-hover-card`,{ref:b,class:[`wui-hover-card`,v].filter(Boolean).join(` `),open:d?``:void 0,"open-delay":Number.isFinite(h)?h:void 0,"close-delay":Number.isFinite(g)?g:void 0,...s,...y,children:[i(`span`,{className:`wui-hover-card-trigger`,children:l}),i(`span`,{className:`wui-hover-card-panel`,role:`group`,"aria-label":m||void 0,"aria-busy":f?`true`:void 0,children:f?a(`span`,{className:`wui-hover-card-loading`,role:`status`,children:[i(`span`,{className:`wui-spinner wui-spinner-sm`,"aria-hidden":`true`}),i(`span`,{children:p})]}):u})]})}export{o as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import{FULL_LINEAR_LOADERS as n,FULL_VARIANT_LOADERS as r,shardKey as i}from"./iconCatalogLoaders.g.js";import{ICON_NAMES as a}from"./iconCatalogNames.g.js";import{GLYPHS as o}from"./iconGlyphs.g.js";import s from"./warnInvalidValue.js";import c from"./warnUnknownProps.js";import l from"./withTooltip.js";import{useEffect as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";var m=[`linear`,`outline`,`bold`,`bulk`,`broken`,`twotone`],h=new Set;function g(e,n){h.has(e)||(h.add(e),t(`[@webority/ui-react] The ${e} failed to load (${n?.message??n}); icons fall back to the linear default until a later render retries it.`))}var _=null,v=null,y=!1,b=new Set;function x(){return v||=import(`./iconVariants.g.js`).then(e=>{_=e.VARIANT_GLYPHS,y=!1;for(let e of b)e();b.clear()}).catch(e=>{v=null,g(`curated icon variants chunk`,e),y?b.clear():(y=!0,setTimeout(()=>{for(let e of[...b])e()},1e3))}),v}var S=new Set(a),C=Object.create(null),w=Object.create(null),T=Object.create(null),E=Object.create(null);function D(e){let t=i(e),r=n[t];return r?(w[t]||=r().then(e=>{Object.assign(C,e.FULL_GLYPHS),E[t]=!1;let n=T[t];if(n){for(let e of n)e();n.clear()}}).catch(e=>{w[t]=null,g(`full icon catalogue '${t}' shard`,e),E[t]?T[t]?.clear():(E[t]=!0,setTimeout(()=>{for(let e of[...T[t]||[]])e()},1e3))}),w[t]):null}var O=Object.create(null),k=Object.create(null),A=Object.create(null),j=Object.create(null);function M(e,t){let n=r[e];if(!n)return null;let a=i(t),o=n[a];if(!o)return null;let s=`${e}:${a}`;return k[s]||=o().then(t=>{O[e]||(O[e]=Object.create(null)),Object.assign(O[e],t.FULL_VARIANT_GLYPHS),j[s]=!1;let n=A[s];if(n){for(let e of n)e();n.clear()}}).catch(t=>{k[s]=null,g(`${e} icon catalogue '${a}' shard`,t),j[s]?A[s]?.clear():(j[s]=!0,setTimeout(()=>{for(let e of[...A[s]||[]])e()},1e3))}),k[s]}var N=a,P=new Map;function F(e){for(let[t,n]of Object.entries(e))P.set(t,n)}function I(t){let{name:n,size:r=16,variant:a,tooltip:h,tooltipPlacement:g,className:v,color:y,style:w,"data-canvas":E,...k}=t;c(`AppIcon`,k),s(`AppIcon`,`variant`,a,m);let j=!!a&&a!==`linear`,N=h!=null&&h!==``,F=e(`AppIcon`,t),I=(e,t=!0)=>N?l(f(`span`,{className:`wui-icon-tip`,role:`img`,"aria-label":h,...t?F:void 0,children:e}),h,g):e,L=o[n]!==void 0,R=!L&&S.has(n),[,z]=d(0);u(()=>{let e=()=>z(e=>e+1);j&&L&&!_&&(b.add(e),x());let t=R?i(n):null;R&&C[n]===void 0&&(T[t]||=new Set,T[t].add(e),D(n));let r=j&&R?`${a}:${i(n)}`:null;return j&&R&&O[a]?.[n]===void 0&&(A[r]||=new Set,A[r].add(e),M(a,n)),()=>{b.delete(e),t&&T[t]?.delete(e),r&&A[r]?.delete(e)}},[n,j,L,R,a]);let B=P.get(n);if(B)return I(B({size:r,color:y,className:v,style:w}),!1);if(n===`hard-hat`)return I(f(`svg`,{width:r,height:r,viewBox:`0 0 24 24`,fill:`none`,className:v?`wui-icon ${v}`:`wui-icon`,"data-icon":n,"aria-hidden":`true`,style:{color:y,...w},...N?void 0:F,...k,children:p(`g`,{fill:`currentColor`,children:[f(`circle`,{cx:`12`,cy:`7.5`,r:`4.2`}),f(`path`,{d:`M3.2 22.5C3.2 17.4 7.5 14.9 11 14.7L12 17.4l1-2.7C16.5 14.9 20.8 17.4 20.8 22.5z`})]})}));let V=j&&(_?.[a]?.[n]||R&&O?.[a]?.[n])||o[n]||C[n];return V?I(f(`svg`,{width:r,height:r,viewBox:`0 0 24 24`,fill:`none`,className:v?`wui-icon ${v}`:`wui-icon`,"data-icon":n,"aria-hidden":`true`,style:{color:y,...w},dangerouslySetInnerHTML:{__html:V},...N?void 0:F,...k})):null}export{I as default,N as iconNames,F as registerIcons};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import{FULL_LINEAR_LOADERS as n,FULL_VARIANT_LOADERS as r,shardKey as i}from"./iconCatalogLoaders.g.js";import{ICON_NAMES as a}from"./iconCatalogNames.g.js";import{GLYPHS as o}from"./iconGlyphs.g.js";import s from"./warnInvalidValue.js";import c from"./warnUnknownProps.js";import l from"./withTooltip.js";import{useEffect as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";var m=[`linear`,`outline`,`bold`,`bulk`,`broken`,`twotone`],h=new Set;function g(e,n){h.has(e)||(h.add(e),t(`[@webority/ui-react] The ${e} failed to load (${n?.message??n}); icons fall back to the linear default until a later render retries it.`))}var _=null,v=null,y=!1,b=new Set;function x(){return v||=import(`./iconVariants.g.js`).then(e=>{_=e.VARIANT_GLYPHS,y=!1;for(let e of b)e();b.clear()}).catch(e=>{v=null,g(`curated icon variants chunk`,e),y?b.clear():(y=!0,setTimeout(()=>{for(let e of[...b])e()},1e3))}),v}var S=new Set(a),C=Object.create(null),w=Object.create(null),T=Object.create(null),E=Object.create(null);function D(e){let t=i(e),r=n[t];return r?(w[t]||=r().then(e=>{Object.assign(C,e.FULL_GLYPHS),E[t]=!1;let n=T[t];if(n){for(let e of n)e();n.clear()}}).catch(e=>{w[t]=null,g(`full icon catalogue '${t}' shard`,e),E[t]?T[t]?.clear():(E[t]=!0,setTimeout(()=>{for(let e of[...T[t]||[]])e()},1e3))}),w[t]):null}var O=Object.create(null),k=Object.create(null),A=Object.create(null),j=Object.create(null);function M(e,t){let n=r[e];if(!n)return null;let a=i(t),o=n[a];if(!o)return null;let s=`${e}:${a}`;return k[s]||=o().then(t=>{O[e]||(O[e]=Object.create(null)),Object.assign(O[e],t.FULL_VARIANT_GLYPHS),j[s]=!1;let n=A[s];if(n){for(let e of n)e();n.clear()}}).catch(t=>{k[s]=null,g(`${e} icon catalogue '${a}' shard`,t),j[s]?A[s]?.clear():(j[s]=!0,setTimeout(()=>{for(let e of[...A[s]||[]])e()},1e3))}),k[s]}var N=a,P=new Map;function F(e){for(let[t,n]of Object.entries(e))P.set(t,n)}function I(t){let{marker:n,props:r}=e(`AppIcon`,t),{name:a,size:h=16,variant:g,tooltip:v,tooltipPlacement:y,className:w,color:E,style:k,...j}=r;c(`AppIcon`,j),s(`AppIcon`,`variant`,g,m);let N=!!g&&g!==`linear`,F=v!=null&&v!==``,I=(e,t=!0)=>F?l(f(`span`,{className:`wui-icon-tip`,role:`img`,"aria-label":v,...t?n:void 0,children:e}),v,y):e,L=o[a]!==void 0,R=!L&&S.has(a),[,z]=d(0);u(()=>{let e=()=>z(e=>e+1);N&&L&&!_&&(b.add(e),x());let t=R?i(a):null;R&&C[a]===void 0&&(T[t]||=new Set,T[t].add(e),D(a));let n=N&&R?`${g}:${i(a)}`:null;return N&&R&&O[g]?.[a]===void 0&&(A[n]||=new Set,A[n].add(e),M(g,a)),()=>{b.delete(e),t&&T[t]?.delete(e),n&&A[n]?.delete(e)}},[a,N,L,R,g]);let B=P.get(a);if(B)return I(B({size:h,color:E,className:w,style:k}),!1);if(a===`hard-hat`)return I(f(`svg`,{width:h,height:h,viewBox:`0 0 24 24`,fill:`none`,className:w?`wui-icon ${w}`:`wui-icon`,"data-icon":a,"aria-hidden":`true`,style:{color:E,...k},...F?void 0:n,...j,children:p(`g`,{fill:`currentColor`,children:[f(`circle`,{cx:`12`,cy:`7.5`,r:`4.2`}),f(`path`,{d:`M3.2 22.5C3.2 17.4 7.5 14.9 11 14.7L12 17.4l1-2.7C16.5 14.9 20.8 17.4 20.8 22.5z`})]})}));let V=N&&(_?.[g]?.[a]||R&&O?.[g]?.[a])||o[a]||C[a];return V?I(f(`svg`,{width:h,height:h,viewBox:`0 0 24 24`,fill:`none`,className:w?`wui-icon ${w}`:`wui-icon`,"data-icon":a,"aria-hidden":`true`,style:{color:E,...k},dangerouslySetInnerHTML:{__html:V},...F?void 0:n,...j})):null}export{I as default,N as iconNames,F as registerIcons};
@@ -0,0 +1 @@
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import ee from"./withTooltip.js";import r from"./AppIcon.js";import te from"./AppAlert.js";import ne from"./AppButton.js";import re from"../lib/FieldMessage.js";import ie from"./AppRequiredMark.js";import ae from"./AppModal.js";import oe from"../lib/useFileDrop.js";import{AVATAR_ACCEPT as se,AVATAR_MAX_SIZE_MB as i,AVATAR_OUTPUT_SIZE as ce,AVATAR_OUTPUT_TYPE as a,AVATAR_PREVIEW_SIZES as le,AVATAR_TEXT as o,DEFAULT_IMAGE_ACCEPT as s,DEFAULT_MAX_SIZE_MB as c,avatarUnreadableMessage as l,validateFile as ue}from"@webority/ui-elements/helpers";import{useCallback as de,useEffect as fe,useId as pe,useRef as me,useState as u}from"react";import{Fragment as he,jsx as d,jsxs as f}from"react/jsx-runtime";import"@webority/ui-elements/elements/image-crop";var ge=[`logo`,`avatar`],_e=[`overlay`,`buttons`],ve=[`stacked`,`inline`,`profile`],ye=[`initials`,`avatar`],be=[`circle`,`rounded`,`square`],xe=[`keep`,`image/webp`],Se=le.join(` `),Ce={logo:{controls:`overlay`,accept:s,maxSizeMb:c,crop:void 0,rotatable:!1,previews:!1,camera:!1,outputSize:void 0,outputType:`keep`,variant:`initials`,sizes:{sm:72,md:120,lg:160}},avatar:{controls:`buttons`,accept:se,maxSizeMb:i,crop:1,rotatable:!0,previews:!0,camera:!0,outputSize:ce,outputType:a,variant:`avatar`,sizes:{sm:64,md:96,lg:128}}},p=`That image could not be cropped. Choose another one.`,we=`That image could not be opened. Choose another one.`,Te={dialogSize:`lg`,dialogTitle:`Crop photo`,dialogSubtitle:`Drag the frame and zoom to choose what to keep.`,save:`Apply`,cancel:`Cancel`,cropFailed:p,unreadable:()=>we},Ee={dialogSize:void 0,dialogTitle:o.dialogTitle,dialogSubtitle:o.dialogSubtitle,save:o.save,cancel:o.cancel,cropFailed:o.cropFailed,unreadable:l};function m(se){let{marker:i,props:ce}=e(`AppImagePicker`,se),{kind:a=`logo`,controls:le,value:s,fallback:c,variant:l,name:p,onPick:we,onRemove:m,removeName:h,loading:g=!1,disabled:De=!1,accept:Oe,maxSizeMb:ke,shape:_=`circle`,size:v=`md`,crop:Ae,rotatable:je,previews:Me,camera:Ne,outputSize:Pe,outputType:Fe,layout:y=`stacked`,title:Ie,subtitle:Le,overlayIcon:Re=`image`,overlayLabel:ze=`Update photo`,removeLabel:b=`Remove photo`,ariaLabel:Be,label:Ve,hint:x,error:He,required:Ue=!1,className:S=``,fieldClassName:We=``,style:C,...w}=ce;n(`AppImagePicker`,w),t(`AppImagePicker`,`kind`,a,ge),t(`AppImagePicker`,`controls`,le,_e),t(`AppImagePicker`,`variant`,l,ye),t(`AppImagePicker`,`layout`,y,ve),t(`AppImagePicker`,`shape`,_,be),t(`AppImagePicker`,`outputType`,Fe,xe);let T=Ce[a]??Ce.logo,E=a===`avatar`?Ee:Te,D=T.sizes;t(`AppImagePicker`,`size`,typeof v==`string`?v:null,Object.keys(D));let Ge=(le??T.controls)===`overlay`,Ke=l??T.variant,O=Oe??T.accept,k=ke??T.maxSizeMb,A=Pe??T.outputSize,qe=Fe??T.outputType,Je=je??T.rotatable,Ye=Me??T.previews,Xe=Ne??T.camera,j=Ae??T.crop,M=j===`free`?null:typeof j==`number`&&Number.isFinite(j)&&j>0?j:void 0;j!=null&&M===void 0&&t(`AppImagePicker`,`crop`,String(j),[`free`,`a positive number`]);let Ze=M!==void 0&&A===void 0,N=me(null),Qe=me(null),P=me(null),F=pe(),[I,L]=u(null),[$e,R]=u(!1),[et,z]=u(!1),[tt,B]=u(``),[V,H]=u(null),[U,nt]=u(!1),[W,G]=u(`loading`),[rt,K]=u(``),it=de(e=>{if(P.current=e,!e)return;let t=()=>{G(`ready`),e.querySelector(`.wui-crop-stage`)?.focus()},n=()=>G(`error`);return e.addEventListener(`load`,t),e.addEventListener(`error`,n),()=>{e.removeEventListener(`load`,t),e.removeEventListener(`error`,n),P.current=null}},[]);fe(()=>()=>V&&URL.revokeObjectURL(V.url),[V]),fe(()=>()=>I&&URL.revokeObjectURL(I),[I]);let[at,ot]=u(s);s!==at&&(ot(s),L(null),R(!1),z(!1));let q=g||De,J=$e?null:I||(s&&!et?s:null),st=!!J,Y=He||tt,X=x&&!Y?`${F}-hint`:void 0,Z=Y?`${F}-error`:void 0,ct=Z||X,lt=!q&&st&&(!!I||!!m||!!h),ut=st?o.change:o.choose,dt=typeof v==`number`?v:D[v]??D.md,ft=()=>{q||N.current?.click()},pt=()=>{q||Qe.current?.click()},mt=e=>{if(p&&N.current&&typeof DataTransfer==`function`){let t=new DataTransfer;t.items.add(e),N.current.files=t.files}R(!1),z(!1),L(URL.createObjectURL(e)),we(e)},ht=e=>{let t=M!==void 0&&e.type!==`image/svg+xml`,n=ue(e,{accept:O,maxSizeMb:t&&Ze?0:k});if(n){B(n);return}if(B(``),t){G(`loading`),K(``),H({file:e,url:URL.createObjectURL(e)});return}mt(e)},{dragOver:gt,dropProps:_t}=oe({accept:O,maxSizeMb:Ze?0:k,disabled:q,onFiles:e=>ht(e[0]),onReject:({message:e})=>B(e)}),vt=e=>{let t=qe===`keep`?e.type:qe;return A===void 0?{name:e.name,type:t,maxBytes:k>0?k*1024*1024:0}:{name:e.name||`photo`,type:t,size:A}},yt=async()=>{let{file:e}=V;nt(!0),K(``);let t=null;try{t=await P.current?.toFile(vt(e))}catch{t=null}if(nt(!1),!t){K(E.cropFailed);return}if(H(null),Ze){let e=ue(t,{accept:O,maxSizeMb:k});e?B(e):mt(t);return}mt(t)},bt=()=>{U||H(null)},xt=e=>{let t=e.target.files?.[0];e.target.value=``,t&&ht(t)},St=()=>{L(null),R(!0),B(``),N.current&&(N.current.value=``),m?.()},Q=M!==void 0&&f(ae,{open:!!V,title:E.dialogTitle,subtitle:E.dialogSubtitle,size:E.dialogSize,staticBackdrop:!0,dismissible:!U,onClose:bt,footer:f(he,{children:[d(ne,{type:`button`,variant:`secondary`,disabled:U,onClick:bt,children:E.cancel}),d(ne,{type:`button`,variant:`primary`,loading:U,disabled:W!==`ready`,onClick:yt,children:E.save})]}),children:[W===`error`&&V&&d(te,{variant:`danger`,children:E.unreadable(V.file)}),rt&&d(te,{variant:`danger`,children:rt}),V&&W!==`error`&&d(`wui-image-crop`,{ref:it,src:V.url,aspect:M??`free`,round:M===1&&_===`circle`,rotatable:Je,previews:Ye?Se:void 0})]}),Ct=h&&d(`input`,{type:`hidden`,name:h,value:`true`,disabled:!$e}),$=Ve&&f(`label`,{className:`label`,htmlFor:F,children:[Ve,Ue&&d(ie,{})]}),wt=d(`input`,{id:F,ref:N,type:`file`,name:p,hidden:!0,accept:O,disabled:q,onChange:xt});if(!Ge){let e=dt,t=Xe&&f(`button`,{type:`button`,className:`btn btn-secondary btn-sm wui-image-picker-buttons-camera`,disabled:q,onClick:pt,children:[d(r,{name:`camera`,size:16}),o.camera]});return f(`div`,{...i,className:`field wui-image-picker-field${We?` ${We}`:``}`,children:[$,f(`div`,{className:`wui-image-picker-buttons${gt?` is-dragging`:``}${S?` ${S}`:``}`,style:{"--wui-avatar-size":`${e}px`,...C},..._t,children:[f(`button`,{type:`button`,className:`wui-image-picker-buttons-face`,tabIndex:-1,"aria-label":Be??ut,"aria-describedby":ct,"aria-busy":g||void 0,disabled:q,onClick:ft,...w,children:[J?d(`img`,{className:`wui-image-picker-buttons-img`,src:J,alt:``,onError:()=>z(!0)}):d(`span`,{className:`wui-image-picker-buttons-placeholder`,"aria-hidden":`true`,children:c||d(r,{name:`user`,size:Math.round(e*.5)})}),d(`span`,{className:`wui-image-picker-buttons-badge`,"aria-hidden":`true`,children:g?d(r,{name:`refresh-cw`,size:14,className:`wui-spin`}):d(r,{name:`camera`,size:14})})]}),f(`div`,{className:`wui-image-picker-buttons-actions`,children:[d(`button`,{type:`button`,className:`btn btn-secondary btn-sm`,disabled:q,"aria-describedby":ct,onClick:ft,children:ut}),t,d(`button`,{type:`button`,className:`btn btn-secondary-danger btn-sm`,"data-wui-image-picker-remove":!0,hidden:!lt,onClick:St,children:b})]}),wt,Xe&&d(`input`,{ref:Qe,type:`file`,hidden:!0,accept:`image/*`,capture:`user`,disabled:q,onChange:xt}),Ct]}),d(re,{error:Y,hint:x,errorId:Z,hintId:X}),Q]})}let Tt=dt,Et=Math.max(14,Math.round(Tt*.18)),Dt=Math.round(Tt*.5),Ot=`wui-image-picker${Ke===`avatar`?` wui-image-picker-avatar`:``}${_===`rounded`?` wui-image-picker-rounded`:_===`square`?` wui-image-picker-square`:``}${gt?` is-dragging`:``}`,kt=y===`inline`,At=y===`profile`,jt=[`field`,`wui-image-picker-field`,kt&&`wui-image-picker-field-inline`,At&&`wui-image-picker-field-profile`,S,We].filter(Boolean).join(` `),Mt=f(`div`,{className:`wui-image-picker-shell`,style:{"--wui-logo-size":`${Tt}px`},children:[d(`button`,{type:`button`,className:Ot,onClick:ft,disabled:q,"aria-busy":g||void 0,"aria-label":Be??`Upload photo`,"aria-describedby":Z||X,..._t,...w,children:f(`span`,{className:`wui-image-picker-ring`,"data-overlay-label":ze,children:[J?d(`img`,{className:`wui-image-picker-img`,src:J,alt:``,onError:()=>z(!0)}):d(`span`,{className:`wui-image-picker-logo`,children:c||Ke===`avatar`&&d(r,{name:`user`,size:Dt})}),g?d(`span`,{className:`wui-image-picker-overlay is-loading`,"aria-hidden":`true`,children:d(r,{name:`refresh-cw`,size:Et,className:`wui-spin`})}):!De&&f(`span`,{className:`wui-image-picker-overlay`,children:[d(r,{name:Re,size:Et}),d(`span`,{children:ze})]})]})}),ee(d(`button`,{type:`button`,className:`wui-image-picker-remove`,hidden:!lt,"aria-label":b,"data-wui-image-picker-remove":!0,onClick:St,children:d(r,{name:`x`,size:14})}),lt?b:null),wt,Ct]}),Nt=x&&!Y?d(`div`,{className:`wui-image-picker-hint`,id:X,children:x}):null,Pt=Y?d(re,{error:Y,errorId:Z}):null,Ft=f(`div`,{className:`wui-image-picker-meta`,children:[Ie&&d(`div`,{className:`wui-image-picker-title`,children:Ie}),Le&&d(`div`,{className:`wui-image-picker-subtitle`,children:Le}),Nt,Pt]});return kt?f(`div`,{...i,className:jt,style:C,children:[$,f(`div`,{className:`wui-image-picker-row`,children:[Mt,Ft]}),Q]}):At?f(`div`,{...i,className:jt,style:C,children:[$,Mt,Ft,Q]}):f(`div`,{...i,className:jt,style:C,children:[$,Mt,Nt,Pt,Q]})}export{m as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppIcon.js";import i from"./AppPopover.js";import{useState as a}from"react";import{jsx as o}from"react/jsx-runtime";var s={sm:` infotip-popover-sm`,md:``,lg:` infotip-popover-lg`,xl:` infotip-popover-xl`};function c(c){let{label:l,children:u,placement:d=`auto`,width:f=`md`,className:p=``,...m}=c;n(`AppInfoTip`,m),t(`AppInfoTip`,`width`,f,Object.keys(s));let[h,g]=a(!1),_=!!l;return!_&&!u?null:o(`span`,{className:`infotip${p?` ${p}`:``}`,...e(`AppInfoTip`,c),...m,children:o(i,{trigger:o(`button`,{type:`button`,className:`infotip-btn`,"aria-label":l||`More information`,children:o(r,{name:`info`,size:16})}),title:_?l:void 0,placement:d,triggerType:[`hover`,`focus`],className:`infotip-popover${s[f]??``}`,onToggle:g,"aria-expanded":h,children:u})})}export{c as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppIcon.js";import i from"./AppPopover.js";import{useState as a}from"react";import{jsx as o}from"react/jsx-runtime";var s={sm:` infotip-popover-sm`,md:``,lg:` infotip-popover-lg`,xl:` infotip-popover-xl`};function c(c){let{marker:l,props:u}=e(`AppInfoTip`,c),{label:d,children:f,placement:p=`auto`,width:m=`md`,className:h=``,...g}=u;n(`AppInfoTip`,g),t(`AppInfoTip`,`width`,m,Object.keys(s));let[_,v]=a(!1),y=!!d;return!y&&!f?null:o(`span`,{className:`infotip${h?` ${h}`:``}`,...l,...g,children:o(i,{trigger:o(`button`,{type:`button`,className:`infotip-btn`,"aria-label":d||`More information`,children:o(r,{name:`info`,size:16})}),title:y?d:void 0,placement:p,triggerType:[`hover`,`focus`],className:`infotip-popover${s[m]??``}`,onToggle:v,"aria-expanded":_,children:f})})}export{c as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppIcon.js";import{optionsEqual as i}from"./useWuiControl.js";import{useEffect as a,useId as o,useRef as s,useState as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import"@webority/ui-elements/elements/select";import"@webority/ui-elements/elements/datepicker";import{INLINE_EDIT_TEXT as d,INLINE_EDIT_TYPES as f,inlineEditText as p}from"@webority/ui-elements/elements/inline-edit";var m=e=>e==null?``:String(e),h=(e,t)=>t===`number`?e===``?null:Number(e):e;function g(g){let{value:_,onSave:v,type:y,options:b=[],label:x,placeholder:S,validate:C,renderValue:w,disabled:T=!1,className:E=``,id:D,...O}=g;n(`AppInlineEdit`,O),t(`AppInlineEdit`,`type`,y,f);let k=f.includes(y)?y:`text`,A=o(),j=D||`inline-edit-${A.replace(/[^a-zA-Z0-9_-]/g,``)}`,M=`${j}-error`,N=`${j}-control`,P=s(null),F=s(null),I=m(_),[L,R]=c(I),[z,B]=c(I);L!==I&&(R(I),B(I));let[V,H]=c(null),U=s(null);U.current={onSave:v,validate:C,kind:k},a(()=>{let e=P.current;if(e)return e.save=async e=>{H(e);try{await U.current.onSave?.(h(e,U.current.kind)),B(e)}finally{H(null)}},e.validate=e=>U.current.validate?.(h(e,U.current.kind))||null,()=>{e.save=void 0,e.validate=void 0}},[]),a(()=>{let e=F.current;if(!e)return;let t=b.map(e=>({value:String(e.value),label:m(e.label??e.value)}));i(t,e.options)||(e.options=t)});let W=V??z,G=p(W,{type:k,options:b,placeholder:S}),K=w&&!G.empty?w(h(W,k)):G.text,q={id:N,"data-wui-control":``,"aria-label":x},J;return J=k===`select`?l(`wui-select`,{ref:F,...q,size:`sm`,placeholder:S||void 0}):k===`date`?l(`wui-datepicker`,{...q,size:`sm`,"aria-describedby":M,placeholder:S||void 0}):k===`textarea`?l(`textarea`,{...q,className:`form-control textarea`,rows:3,"aria-describedby":M,placeholder:S||void 0}):l(`input`,{...q,type:k===`number`?`number`:`text`,inputMode:k===`number`?`decimal`:void 0,className:`form-control input input-sm`,"aria-describedby":M,placeholder:S||void 0}),u(`wui-inline-edit`,{ref:P,id:j,class:E?`wui-inline-edit ${E}`:`wui-inline-edit`,type:k,label:x,value:z,placeholder:S||void 0,disabled:T?``:void 0,controlled:``,...e(`AppInlineEdit`,g),...O,children:[u(`button`,{type:`button`,className:`wui-inline-edit-display`,"data-wui-display":``,"aria-describedby":M,disabled:T,children:[l(`span`,{className:`visually-hidden`,children:T?d.readOnly(x):d.edit(x)}),l(`span`,{className:`wui-inline-edit-value`,"data-wui-value":``,"data-wui-empty":G.empty?``:void 0,children:K}),l(`span`,{className:`wui-inline-edit-icon`,"aria-hidden":`true`,children:l(r,{name:`edit`,size:14})})]}),l(`span`,{className:`wui-inline-edit-editor`,"data-wui-editor":``,hidden:!0,children:J}),u(`span`,{className:`wui-inline-edit-status`,"aria-hidden":`true`,children:[l(`span`,{className:`wui-inline-edit-spinner spinner-border spinner-border-sm`}),l(`span`,{className:`wui-inline-edit-saved`,children:l(r,{name:`tick-circle`,size:16})})]}),l(`span`,{className:`wui-inline-edit-error`,id:M,"data-wui-error":``,hidden:!0}),l(`span`,{className:`visually-hidden`,"data-wui-live":``,"aria-live":`polite`,"aria-atomic":`true`})]})}export{g as default};
1
+ import{splitMarkerProps as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppIcon.js";import i from"./AppSelect.js";import{useEffect as a,useId as o,useRef as s,useState as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import"@webority/ui-elements/elements/datepicker";import{INLINE_EDIT_TEXT as d,INLINE_EDIT_TYPES as f,inlineEditText as p}from"@webority/ui-elements/elements/inline-edit";var m=e=>e==null?``:String(e),h=(e,t)=>t===`number`?e===``?null:Number(e):e;function g(g){let{marker:_,props:v}=e(`AppInlineEdit`,g),{value:y,onSave:b,type:x,options:S=[],label:C,placeholder:w,validate:T,renderValue:E,disabled:D=!1,className:O=``,id:k,...A}=v;n(`AppInlineEdit`,A),t(`AppInlineEdit`,`type`,x,f);let j=f.includes(x)?x:`text`,M=o(),N=k||`inline-edit-${M.replace(/[^a-zA-Z0-9_-]/g,``)}`,P=`${N}-error`,F=`${N}-control`,I=s(null),L=m(y),[R,z]=c(L),[B,V]=c(L);R!==L&&(z(L),V(L));let[H,U]=c(null),W=s(null);W.current={onSave:b,validate:T,kind:j},a(()=>{let e=I.current;if(e)return e.save=async e=>{U(e);try{await W.current.onSave?.(h(e,W.current.kind)),V(e)}finally{U(null)}},e.validate=e=>W.current.validate?.(h(e,W.current.kind))||null,()=>{e.save=void 0,e.validate=void 0}},[]);let G=H??B,K=p(G,{type:j,options:S,placeholder:w}),q=E&&!K.empty?E(h(G,j)):K.text,J={id:F,"data-wui-control":``,"aria-label":C},Y;if(j===`select`){let e=S.map(e=>({value:String(e.value),label:m(e.label??e.value)}));Y=l(i,{id:F,"data-wui-control":``,"aria-label":C,size:`sm`,placeholder:w||void 0,options:e})}else Y=j===`date`?l(`wui-datepicker`,{...J,size:`sm`,"aria-describedby":P,placeholder:w||void 0}):j===`textarea`?l(`textarea`,{...J,className:`form-control textarea`,rows:3,"aria-describedby":P,placeholder:w||void 0}):l(`input`,{...J,type:j===`number`?`number`:`text`,inputMode:j===`number`?`decimal`:void 0,className:`form-control input input-sm`,"aria-describedby":P,placeholder:w||void 0});return u(`wui-inline-edit`,{ref:I,id:N,class:O?`wui-inline-edit ${O}`:`wui-inline-edit`,type:j,label:C,value:B,placeholder:w||void 0,disabled:D?``:void 0,controlled:``,..._,...A,children:[u(`button`,{type:`button`,className:`wui-inline-edit-display`,"data-wui-display":``,"aria-describedby":P,disabled:D,children:[l(`span`,{className:`visually-hidden`,children:D?d.readOnly(C):d.edit(C)}),l(`span`,{className:`wui-inline-edit-value`,"data-wui-value":``,"data-wui-empty":K.empty?``:void 0,children:q}),l(`span`,{className:`wui-inline-edit-icon`,"aria-hidden":`true`,children:l(r,{name:`edit`,size:14})})]}),l(`span`,{className:`wui-inline-edit-editor`,"data-wui-editor":``,hidden:!0,children:Y}),u(`span`,{className:`wui-inline-edit-status`,"aria-hidden":`true`,children:[l(`span`,{className:`wui-inline-edit-spinner spinner-border spinner-border-sm`}),l(`span`,{className:`wui-inline-edit-saved`,children:l(r,{name:`tick-circle`,size:16})})]}),l(`span`,{className:`wui-inline-edit-error`,id:P,"data-wui-error":``,hidden:!0}),l(`span`,{className:`visually-hidden`,"data-wui-live":``,"aria-live":`polite`,"aria-atomic":`true`})]})}export{g as default};