@amboss/design-system 3.48.4 → 3.48.6-canary.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.
- package/build/cjs/components/AvatarGroup/AvatarGroup.d.ts +2 -1
- package/build/cjs/components/AvatarGroup/AvatarGroup.js +1 -1
- package/build/cjs/components/Form/Combobox/MultiSelect.js +1 -1
- package/build/cjs/components/Form/Combobox/SingleSelect.js +1 -1
- package/build/cjs/components/Form/Select/SelectWithCustomTrigger.js +1 -1
- package/build/cjs/components/Internal/LayoutManager/-constants.d.ts +9 -0
- package/build/cjs/components/Internal/LayoutManager/-constants.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/-types.d.ts +181 -0
- package/build/cjs/components/Internal/LayoutManager/-types.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/Layout.d.ts +28 -0
- package/build/cjs/components/Internal/LayoutManager/Layout.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/LayoutProvider.d.ts +9 -0
- package/build/cjs/components/Internal/LayoutManager/LayoutProvider.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/context.d.ts +12 -0
- package/build/cjs/components/Internal/LayoutManager/context.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/index.d.ts +7 -0
- package/build/cjs/components/Internal/LayoutManager/index.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/persistence.d.ts +6 -0
- package/build/cjs/components/Internal/LayoutManager/persistence.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/reconcile.d.ts +2 -0
- package/build/cjs/components/Internal/LayoutManager/reconcile.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/reducer.d.ts +5 -0
- package/build/cjs/components/Internal/LayoutManager/reducer.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/store.d.ts +10 -0
- package/build/cjs/components/Internal/LayoutManager/store.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/useHostNodes.d.ts +9 -0
- package/build/cjs/components/Internal/LayoutManager/useHostNodes.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/useIsMobile.d.ts +5 -0
- package/build/cjs/components/Internal/LayoutManager/useIsMobile.js +1 -0
- package/build/cjs/components/Internal/LayoutManager/useLayout.d.ts +7 -0
- package/build/cjs/components/Internal/LayoutManager/useLayout.js +1 -0
- package/build/cjs/components/PromptInput/PromptTextArea.js +1 -1
- package/build/cjs/index.d.ts +1 -0
- package/build/cjs/index.js +1 -1
- package/build/cjs/web-tokens/_sizes.json +51 -51
- package/build/cjs/web-tokens/visualConfig.d.ts +5 -0
- package/build/cjs/web-tokens/visualConfig.js +1 -1
- package/build/esm/components/AvatarGroup/AvatarGroup.d.ts +2 -1
- package/build/esm/components/AvatarGroup/AvatarGroup.js +1 -1
- package/build/esm/components/Form/Combobox/MultiSelect.js +1 -1
- package/build/esm/components/Form/Combobox/SingleSelect.js +1 -1
- package/build/esm/components/Form/Select/SelectWithCustomTrigger.js +1 -1
- package/build/esm/components/Internal/LayoutManager/-constants.d.ts +9 -0
- package/build/esm/components/Internal/LayoutManager/-constants.js +1 -0
- package/build/esm/components/Internal/LayoutManager/-types.d.ts +181 -0
- package/build/esm/components/Internal/LayoutManager/-types.js +1 -0
- package/build/esm/components/Internal/LayoutManager/Layout.d.ts +28 -0
- package/build/esm/components/Internal/LayoutManager/Layout.js +1 -0
- package/build/esm/components/Internal/LayoutManager/LayoutProvider.d.ts +9 -0
- package/build/esm/components/Internal/LayoutManager/LayoutProvider.js +1 -0
- package/build/esm/components/Internal/LayoutManager/context.d.ts +12 -0
- package/build/esm/components/Internal/LayoutManager/context.js +1 -0
- package/build/esm/components/Internal/LayoutManager/index.d.ts +7 -0
- package/build/esm/components/Internal/LayoutManager/index.js +1 -0
- package/build/esm/components/Internal/LayoutManager/persistence.d.ts +6 -0
- package/build/esm/components/Internal/LayoutManager/persistence.js +1 -0
- package/build/esm/components/Internal/LayoutManager/reconcile.d.ts +2 -0
- package/build/esm/components/Internal/LayoutManager/reconcile.js +1 -0
- package/build/esm/components/Internal/LayoutManager/reducer.d.ts +5 -0
- package/build/esm/components/Internal/LayoutManager/reducer.js +1 -0
- package/build/esm/components/Internal/LayoutManager/store.d.ts +10 -0
- package/build/esm/components/Internal/LayoutManager/store.js +1 -0
- package/build/esm/components/Internal/LayoutManager/useHostNodes.d.ts +9 -0
- package/build/esm/components/Internal/LayoutManager/useHostNodes.js +1 -0
- package/build/esm/components/Internal/LayoutManager/useIsMobile.d.ts +5 -0
- package/build/esm/components/Internal/LayoutManager/useIsMobile.js +1 -0
- package/build/esm/components/Internal/LayoutManager/useLayout.d.ts +7 -0
- package/build/esm/components/Internal/LayoutManager/useLayout.js +1 -0
- package/build/esm/components/PromptInput/PromptTextArea.js +1 -1
- package/build/esm/index.d.ts +1 -0
- package/build/esm/index.js +1 -1
- package/build/esm/web-tokens/_sizes.json +51 -51
- package/build/esm/web-tokens/visualConfig.d.ts +5 -0
- package/build/esm/web-tokens/visualConfig.js +1 -1
- package/build/scss/subthemes/_inverted.scss +2 -0
- package/package.json +9 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useState,useRef,useEffect,useCallback,useMemo}from"react";import styled from"@emotion/styled";import{getOptionId,getOptionsListId,OptionsList}from"../Combobox/OptionsList";import{useKeyboard}from"../../../shared/useKeyboard";import{useTypeAheadSearch}from"./useTypeAheadSearch";let HiddenSelectInput=styled("select",{target:"e58t0660",label:"HiddenSelectInput"})(()=>({display:"none"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRm9ybS9TZWxlY3QvU2VsZWN0V2l0aEN1c3RvbVRyaWdnZXIudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Gb3JtL1NlbGVjdC9TZWxlY3RXaXRoQ3VzdG9tVHJpZ2dlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUge1xuICBSZWZPYmplY3QsXG4gIFJlYWN0RWxlbWVudCxcbiAgQ2hhbmdlRXZlbnRIYW5kbGVyLFxuICBQb2ludGVyRXZlbnRIYW5kbGVyLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBDb21tb25TZWxlY3RQcm9wcywgU2VsZWN0T3B0aW9uIH0gZnJvbSBcIi4uL0NvbWJvYm94L0NvbWJvYm94XCI7XG5pbXBvcnQge1xuICBnZXRPcHRpb25JZCxcbiAgZ2V0T3B0aW9uc0xpc3RJZCxcbiAgT3B0aW9uc0xpc3QsXG59IGZyb20gXCIuLi9Db21ib2JveC9PcHRpb25zTGlzdFwiO1xuaW1wb3J0IHsgdXNlS2V5Ym9hcmQgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL3VzZUtleWJvYXJkXCI7XG5pbXBvcnQgeyB1c2VUeXBlQWhlYWRTZWFyY2ggfSBmcm9tIFwiLi91c2VUeXBlQWhlYWRTZWFyY2hcIjtcblxuZXhwb3J0IHR5cGUgVHJpZ2dlclByb3BzID0ge1xuICB0cmlnZ2VyUmVmOiBSZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBpc09wZW46IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICByb2xlOiBzdHJpbmc7XG4gIFwiYXJpYS1leHBhbmRlZFwiPzogYm9vbGVhbjtcbiAgXCJhcmlhLWNvbnRyb2xzXCI/OiBzdHJpbmc7XG4gIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTZWxlY3RXaXRoQ3VzdG9tVHJpZ2dlclByb3BzID0ge1xuICByZW5kZXJUcmlnZ2VyOiAocHJvcHM6IFRyaWdnZXJQcm9wcykgPT4gUmVhY3RFbGVtZW50O1xuICB2YWx1ZTogc3RyaW5nO1xuICBvbkNoYW5nZTogQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxTZWxlY3RFbGVtZW50Pjtcbn0gJiBQaWNrPFxuICBDb21tb25TZWxlY3RQcm9wcyxcbiAgfCBcIm9wdGlvbnNMaXN0V2lkdGhcIlxuICB8IFwib3B0aW9uc1wiXG4gIHwgXCJtYXhIZWlnaHRcIlxuICB8IFwiZGlzYWJsZWRcIlxuICB8IFwibmFtZVwiXG4gIHwgXCJwb3J0YWxDb250YWluZXJcIlxuICB8IFwiYXV0b0NvbXBsZXRlXCJcbiAgfCBcInJlYWRPbmx5XCJcbj47XG5cbmNvbnN0IEhpZGRlblNlbGVjdElucHV0ID0gc3R5bGVkLnNlbGVjdCgoKSA9PiAoe1xuICBkaXNwbGF5OiBcIm5vbmVcIixcbn0pKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdFdpdGhDdXN0b21UcmlnZ2VyKHtcbiAgcmVuZGVyVHJpZ2dlcixcbiAgb3B0aW9uc0xpc3RXaWR0aCxcbiAgb3B0aW9ucyxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIHBvcnRhbENvbnRhaW5lcixcbiAgZGlzYWJsZWQsXG4gIG1heEhlaWdodCA9IDIzMCxcbiAgYXV0b0NvbXBsZXRlID0gXCJvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBvbkNoYW5nZSxcbn06IFNlbGVjdFdpdGhDdXN0b21UcmlnZ2VyUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VsZWN0ZWRJbmRleCwgc2V0U2VsZWN0ZWRJbmRleF0gPSB1c2VTdGF0ZSgtMSk7XG4gIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhpZGRlblNlbGVjdFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgY3VycmVudE9wdGlvbkluZGV4ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBvcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHZhbHVlKSxcbiAgICBbb3B0aW9ucywgdmFsdWVdXG4gICk7XG5cbiAgY29uc3QgY2xvc2VPcHRpb25zTGlzdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWlzT3BlbikgcmV0dXJuO1xuXG4gICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICBzZXRTZWxlY3RlZEluZGV4KC0xKTtcbiAgfSwgW2lzT3Blbl0pO1xuXG4gIGNvbnN0IG9wZW5PcHRpb25zTGlzdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaXNPcGVuIHx8IHJlYWRPbmx5KSByZXR1cm47XG5cbiAgICBzZXRJc09wZW4odHJ1ZSk7XG4gICAgLy8gRm9yIFNhZmFyaSBiZWNhdXNlIGNsaWNrIG9uIGEgYnV0dG9uIGRvZXNuJ3QgZ2l2ZSBpdCBmb2N1c1xuICAgIHRyaWdnZXJSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgfSwgW2lzT3BlbiwgcmVhZE9ubHldKTtcblxuICBjb25zdCB0b2dnbGVPcHRpb25zTGlzdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICBjbG9zZU9wdGlvbnNMaXN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wZW5PcHRpb25zTGlzdCgpO1xuICAgIH1cbiAgfSwgW2lzT3Blbiwgb3Blbk9wdGlvbnNMaXN0LCBjbG9zZU9wdGlvbnNMaXN0XSk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChpbmRleDogbnVtYmVyKSA9PiBzZXRTZWxlY3RlZEluZGV4KGluZGV4KSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFNlbGVjdE9wdGlvbikgPT4ge1xuICAgICAgaGlkZGVuU2VsZWN0UmVmLmN1cnJlbnQudmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgICBoaWRkZW5TZWxlY3RSZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgRXZlbnQoXCJjaGFuZ2VcIiwgeyBidWJibGVzOiB0cnVlIH0pXG4gICAgICApO1xuICAgIH0sXG4gICAgW2hpZGRlblNlbGVjdFJlZl1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVTZWFyY2hNYXRjaCA9IHVzZUNhbGxiYWNrKFxuICAgIChtYXRjaGVkSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKG1hdGNoZWRJbmRleCA9PT0gLTEpIHJldHVybjtcblxuICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICBzZXRTZWxlY3RlZEluZGV4KG1hdGNoZWRJbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVDaGFuZ2Uob3B0aW9uc1ttYXRjaGVkSW5kZXhdKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtpc09wZW4sIG9wdGlvbnMsIHNldFNlbGVjdGVkSW5kZXgsIGhhbmRsZUNoYW5nZV1cbiAgKTtcblxuICB1c2VLZXlib2FyZChcbiAgICB7XG4gICAgICBFbnRlcjogKGV2dDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH0sXG4gICAgICBcIkFycm93VXAgQXJyb3dEb3duXCI6ICgpID0+IHtcbiAgICAgICAgb3Blbk9wdGlvbnNMaXN0KCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgdHJpZ2dlclJlZixcbiAgICAhaXNPcGVuICYmICFkaXNhYmxlZFxuICApO1xuXG4gIHVzZVR5cGVBaGVhZFNlYXJjaCh7XG4gICAgb3B0aW9ucyxcbiAgICB0cmlnZ2VyUmVmLFxuICAgIGlzQWN0aXZlOiAhZGlzYWJsZWQsXG4gICAgZnJvbUluZGV4OiBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IHNlbGVjdGVkSW5kZXggOiBjdXJyZW50T3B0aW9uSW5kZXgsXG4gICAgb25NYXRjaDogaGFuZGxlU2VhcmNoTWF0Y2gsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdHJpZ2dlckVsbSA9IHRyaWdnZXJSZWYuY3VycmVudDtcbiAgICAvLyBwcmV2ZW50IGZvY3VzIG9uIGNsaWNrIHRvIHByZXZlbnQgdG9nZ2xlIG9wZW4gc3RhdGUgb24gY2xpY2sgZm9sbG93ZWQgYnkgZm9jdXNcbiAgICBjb25zdCBoYW5kbGVQb2ludGVyRG93bjogUG9pbnRlckV2ZW50SGFuZGxlcjxIVE1MQnV0dG9uRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgaWYgKHRyaWdnZXJFbG0gJiYgIWRpc2FibGVkKSB7XG4gICAgICB0cmlnZ2VyRWxtLnNldEF0dHJpYnV0ZShcInRhYkluZGV4XCIsIFwiMFwiKTsgLy8gRm9yIFNhZmFyaSwgYmVjYXVzZXMgYnV0dG9ucyBhcmUgbm90IGZvY3VzYWJsZSBieSBkZWZhdWx0XG4gICAgICB0cmlnZ2VyRWxtLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0b2dnbGVPcHRpb25zTGlzdCk7XG4gICAgICB0cmlnZ2VyRWxtLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCBvcGVuT3B0aW9uc0xpc3QpO1xuICAgICAgdHJpZ2dlckVsbS5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCBjbG9zZU9wdGlvbnNMaXN0KTtcbiAgICAgIHRyaWdnZXJFbG0uYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdHJpZ2dlckVsbT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRvZ2dsZU9wdGlvbnNMaXN0KTtcbiAgICAgIHRyaWdnZXJFbG0/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCBvcGVuT3B0aW9uc0xpc3QpO1xuICAgICAgdHJpZ2dlckVsbT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgY2xvc2VPcHRpb25zTGlzdCk7XG4gICAgICB0cmlnZ2VyRWxtPy5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgaGFuZGxlUG9pbnRlckRvd24pO1xuICAgIH07XG4gIH0sIFtcbiAgICB0cmlnZ2VyUmVmLFxuICAgIGRpc2FibGVkLFxuICAgIG9wZW5PcHRpb25zTGlzdCxcbiAgICBjbG9zZU9wdGlvbnNMaXN0LFxuICAgIHRvZ2dsZU9wdGlvbnNMaXN0LFxuICBdKTtcblxuICBjb25zdCBvcHRpb25zTGlzdElkID0gZ2V0T3B0aW9uc0xpc3RJZChuYW1lKTtcbiAgY29uc3QgYXJpYUFjdGl2ZURlc2NlbmRhbnQgPVxuICAgIHNlbGVjdGVkSW5kZXggIT09IC0xID8gZ2V0T3B0aW9uSWQobmFtZSwgb3B0aW9uc1tzZWxlY3RlZEluZGV4XS52YWx1ZSkgOiBcIlwiO1xuICBjb25zdCB0cmlnZ2VyRWxtID0gcmVuZGVyVHJpZ2dlcih7XG4gICAgdHJpZ2dlclJlZixcbiAgICBpc09wZW4sXG4gICAgZGlzYWJsZWQsXG4gICAgcm9sZTogXCJjb21ib2JveFwiLFxuICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IGlzT3BlbiA/IGFyaWFBY3RpdmVEZXNjZW5kYW50IDogXCJcIixcbiAgICBcImFyaWEtY29udHJvbHNcIjogaXNPcGVuID8gb3B0aW9uc0xpc3RJZCA6IFwiXCIsXG4gICAgXCJhcmlhLWV4cGFuZGVkXCI6IGlzT3BlbixcbiAgfSk7XG5cbiAgY29uc3Qgb3B0aW9uc0xpc3RFbG0gPSAoXG4gICAgPE9wdGlvbnNMaXN0XG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICBpc1ZpcnR1YWxpemVkPXtmYWxzZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICB0cmlnZ2VyUmVmPXt0cmlnZ2VyUmVmfVxuICAgICAgb25DbG9zZURyb3Bkb3duPXtjbG9zZU9wdGlvbnNMaXN0fVxuICAgICAgcG9ydGFsQ29udGFpbmVyPXtwb3J0YWxDb250YWluZXJ9XG4gICAgICBzZWxlY3RlZEluZGV4PXtzZWxlY3RlZEluZGV4fVxuICAgICAgb25TZWxlY3RlZEluZGV4Q2hhbmdlPXtoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlfVxuICAgICAgZm9yY2VDaGFuZ2VGYWtlU2VsZWN0PXtoYW5kbGVDaGFuZ2V9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBtYXhIZWlnaHQ9e21heEhlaWdodH1cbiAgICAgIG9wdGlvbnNMaXN0V2lkdGg9e29wdGlvbnNMaXN0V2lkdGh9XG4gICAgLz5cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dHJpZ2dlckVsbX1cbiAgICAgIHtvcHRpb25zTGlzdEVsbX1cbiAgICAgIDxIaWRkZW5TZWxlY3RJbnB1dFxuICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgcmVmPXtoaWRkZW5TZWxlY3RSZWZ9XG4gICAgICAgIGF1dG9Db21wbGV0ZT17YXV0b0NvbXBsZXRlfVxuICAgICAgPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgYXJpYS1sYWJlbD1cIkVtcHR5IG9wdGlvblwiIC8+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT17b3B0aW9uLnZhbHVlfSBrZXk9e29wdGlvbi52YWx1ZX0+XG4gICAgICAgICAgICB7b3B0aW9uLmxhYmVsfVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICApKX1cbiAgICAgIDwvSGlkZGVuU2VsZWN0SW5wdXQ+XG4gICAgPC8+XG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUQwQiJ9 */");export function SelectWithCustomTrigger({renderTrigger,optionsListWidth,options,name,value,portalContainer,disabled,maxHeight=230,autoComplete="on",readOnly=!1,onChange}){let[isOpen,setIsOpen]=useState(!1),[selectedIndex,setSelectedIndex]=useState(-1),triggerRef=useRef(null),hiddenSelectRef=useRef(null),currentOptionIndex=useMemo(()=>options.findIndex(option=>option.value===value),[options,value]),closeOptionsList=useCallback(()=>{isOpen&&(setIsOpen(!1),setSelectedIndex(-1))},[isOpen]),openOptionsList=useCallback(()=>{isOpen||readOnly||(setIsOpen(!0),triggerRef.current?.focus())},[isOpen,readOnly]),toggleOptionsList=useCallback(()=>{isOpen?closeOptionsList():openOptionsList()},[isOpen,openOptionsList,closeOptionsList]),handleSelectedIndexChange=useCallback(index=>setSelectedIndex(index),[]),handleChange=useCallback(option=>{hiddenSelectRef.current.value=option.value,hiddenSelectRef.current.dispatchEvent(new Event("change",{bubbles:!0}))},[hiddenSelectRef]),handleSearchMatch=useCallback(matchedIndex=>{-1!==matchedIndex&&(isOpen?setSelectedIndex(matchedIndex):handleChange(options[matchedIndex]))},[isOpen,options,setSelectedIndex,handleChange]);useKeyboard({Enter:evt=>{evt.preventDefault()},"ArrowUp ArrowDown":()=>{openOptionsList()}},triggerRef,!isOpen&&!disabled),useTypeAheadSearch({options,triggerRef,isActive:!disabled,fromIndex:-1!==selectedIndex?selectedIndex:currentOptionIndex,onMatch:handleSearchMatch}),useEffect(()=>{let triggerElm=triggerRef.current,handlePointerDown=evt=>{evt.preventDefault()};return triggerElm&&!disabled&&(triggerElm.setAttribute("tabIndex","0"),triggerElm.addEventListener("click",toggleOptionsList),triggerElm.addEventListener("focus",openOptionsList),triggerElm.addEventListener("blur",closeOptionsList),triggerElm.addEventListener("pointerdown",handlePointerDown)),()=>{triggerElm?.removeEventListener("click",toggleOptionsList),triggerElm?.removeEventListener("focus",openOptionsList),triggerElm?.removeEventListener("blur",closeOptionsList),triggerElm?.removeEventListener("pointerdown",handlePointerDown)}},[triggerRef,disabled,openOptionsList,closeOptionsList,toggleOptionsList]);let optionsListId=getOptionsListId(name),ariaActiveDescendant=-1!==selectedIndex?getOptionId(name,options[selectedIndex].value):"",triggerElm=renderTrigger({triggerRef,isOpen,disabled,role:"combobox","aria-activedescendant":isOpen?ariaActiveDescendant:"","aria-controls":isOpen?optionsListId:"","aria-expanded":isOpen}),optionsListElm=React.createElement(OptionsList,{name:name,isOpen:isOpen,isVirtualized:!1,options:options,triggerRef:triggerRef,onCloseDropdown:closeOptionsList,portalContainer:portalContainer,selectedIndex:selectedIndex,onSelectedIndexChange:handleSelectedIndexChange,forceChangeFakeSelect:handleChange,value:value,disabled:disabled,maxHeight:maxHeight,optionsListWidth:optionsListWidth});return React.createElement(React.Fragment,null,triggerElm,optionsListElm,React.createElement(HiddenSelectInput,{name:name,onChange:onChange,value:value,ref:hiddenSelectRef,autoComplete:autoComplete},React.createElement("option",{value:"","aria-label":"Empty option"}),options.map(option=>React.createElement("option",{value:option.value,key:option.value},option.label))))}
|
|
1
|
+
import React,{useState,useRef,useEffect,useCallback,useMemo}from"react";import styled from"@emotion/styled";import{getOptionId,getOptionsListId,OptionsList}from"../Combobox/OptionsList";import{useKeyboard}from"../../../shared/useKeyboard";import{useTypeAheadSearch}from"./useTypeAheadSearch";let HiddenSelectInput=styled("select",{target:"e1pyx1cg0",label:"HiddenSelectInput"})(()=>({display:"none"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRm9ybS9TZWxlY3QvU2VsZWN0V2l0aEN1c3RvbVRyaWdnZXIudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Gb3JtL1NlbGVjdC9TZWxlY3RXaXRoQ3VzdG9tVHJpZ2dlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUge1xuICBSZWZPYmplY3QsXG4gIFJlYWN0RWxlbWVudCxcbiAgQ2hhbmdlRXZlbnRIYW5kbGVyLFxuICBQb2ludGVyRXZlbnRIYW5kbGVyLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBDb21tb25TZWxlY3RQcm9wcywgU2VsZWN0T3B0aW9uIH0gZnJvbSBcIi4uL0NvbWJvYm94L0NvbWJvYm94XCI7XG5pbXBvcnQge1xuICBnZXRPcHRpb25JZCxcbiAgZ2V0T3B0aW9uc0xpc3RJZCxcbiAgT3B0aW9uc0xpc3QsXG59IGZyb20gXCIuLi9Db21ib2JveC9PcHRpb25zTGlzdFwiO1xuaW1wb3J0IHsgdXNlS2V5Ym9hcmQgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL3VzZUtleWJvYXJkXCI7XG5pbXBvcnQgeyB1c2VUeXBlQWhlYWRTZWFyY2ggfSBmcm9tIFwiLi91c2VUeXBlQWhlYWRTZWFyY2hcIjtcblxuZXhwb3J0IHR5cGUgVHJpZ2dlclByb3BzID0ge1xuICB0cmlnZ2VyUmVmOiBSZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBpc09wZW46IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICByb2xlOiBzdHJpbmc7XG4gIFwiYXJpYS1leHBhbmRlZFwiPzogYm9vbGVhbjtcbiAgXCJhcmlhLWNvbnRyb2xzXCI/OiBzdHJpbmc7XG4gIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTZWxlY3RXaXRoQ3VzdG9tVHJpZ2dlclByb3BzID0ge1xuICByZW5kZXJUcmlnZ2VyOiAocHJvcHM6IFRyaWdnZXJQcm9wcykgPT4gUmVhY3RFbGVtZW50O1xuICB2YWx1ZTogc3RyaW5nO1xuICBvbkNoYW5nZTogQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxTZWxlY3RFbGVtZW50Pjtcbn0gJiBQaWNrPFxuICBDb21tb25TZWxlY3RQcm9wcyxcbiAgfCBcIm9wdGlvbnNMaXN0V2lkdGhcIlxuICB8IFwib3B0aW9uc1wiXG4gIHwgXCJtYXhIZWlnaHRcIlxuICB8IFwiZGlzYWJsZWRcIlxuICB8IFwibmFtZVwiXG4gIHwgXCJwb3J0YWxDb250YWluZXJcIlxuICB8IFwiYXV0b0NvbXBsZXRlXCJcbiAgfCBcInJlYWRPbmx5XCJcbj47XG5cbmNvbnN0IEhpZGRlblNlbGVjdElucHV0ID0gc3R5bGVkLnNlbGVjdCgoKSA9PiAoe1xuICBkaXNwbGF5OiBcIm5vbmVcIixcbn0pKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdFdpdGhDdXN0b21UcmlnZ2VyKHtcbiAgcmVuZGVyVHJpZ2dlcixcbiAgb3B0aW9uc0xpc3RXaWR0aCxcbiAgb3B0aW9ucyxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIHBvcnRhbENvbnRhaW5lcixcbiAgZGlzYWJsZWQsXG4gIG1heEhlaWdodCA9IDIzMCxcbiAgYXV0b0NvbXBsZXRlID0gXCJvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBvbkNoYW5nZSxcbn06IFNlbGVjdFdpdGhDdXN0b21UcmlnZ2VyUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VsZWN0ZWRJbmRleCwgc2V0U2VsZWN0ZWRJbmRleF0gPSB1c2VTdGF0ZSgtMSk7XG4gIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhpZGRlblNlbGVjdFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgY3VycmVudE9wdGlvbkluZGV4ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBvcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHZhbHVlKSxcbiAgICBbb3B0aW9ucywgdmFsdWVdXG4gICk7XG5cbiAgY29uc3QgY2xvc2VPcHRpb25zTGlzdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWlzT3BlbikgcmV0dXJuO1xuXG4gICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICBzZXRTZWxlY3RlZEluZGV4KC0xKTtcbiAgfSwgW2lzT3Blbl0pO1xuXG4gIGNvbnN0IG9wZW5PcHRpb25zTGlzdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaXNPcGVuIHx8IHJlYWRPbmx5KSByZXR1cm47XG5cbiAgICBzZXRJc09wZW4odHJ1ZSk7XG4gICAgLy8gRm9yIFNhZmFyaSBiZWNhdXNlIGNsaWNrIG9uIGEgYnV0dG9uIGRvZXNuJ3QgZ2l2ZSBpdCBmb2N1c1xuICAgIHRyaWdnZXJSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgfSwgW2lzT3BlbiwgcmVhZE9ubHldKTtcblxuICBjb25zdCB0b2dnbGVPcHRpb25zTGlzdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICBjbG9zZU9wdGlvbnNMaXN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wZW5PcHRpb25zTGlzdCgpO1xuICAgIH1cbiAgfSwgW2lzT3Blbiwgb3Blbk9wdGlvbnNMaXN0LCBjbG9zZU9wdGlvbnNMaXN0XSk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChpbmRleDogbnVtYmVyKSA9PiBzZXRTZWxlY3RlZEluZGV4KGluZGV4KSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFNlbGVjdE9wdGlvbikgPT4ge1xuICAgICAgaGlkZGVuU2VsZWN0UmVmLmN1cnJlbnQudmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgICBoaWRkZW5TZWxlY3RSZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgRXZlbnQoXCJjaGFuZ2VcIiwgeyBidWJibGVzOiB0cnVlIH0pXG4gICAgICApO1xuICAgIH0sXG4gICAgW2hpZGRlblNlbGVjdFJlZl1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVTZWFyY2hNYXRjaCA9IHVzZUNhbGxiYWNrKFxuICAgIChtYXRjaGVkSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKG1hdGNoZWRJbmRleCA9PT0gLTEpIHJldHVybjtcblxuICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICBzZXRTZWxlY3RlZEluZGV4KG1hdGNoZWRJbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVDaGFuZ2Uob3B0aW9uc1ttYXRjaGVkSW5kZXhdKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtpc09wZW4sIG9wdGlvbnMsIHNldFNlbGVjdGVkSW5kZXgsIGhhbmRsZUNoYW5nZV1cbiAgKTtcblxuICB1c2VLZXlib2FyZChcbiAgICB7XG4gICAgICAvLyBPcGVuIHRoZSBsaXN0IG9uIEVudGVyL1NwYWNlL0Fycm93IGtleXMgKEFSSUEgQVBHIGNvbWJvYm94IHBhdHRlcm4pLlxuICAgICAgLy8gdXNlS2V5Ym9hcmQgcHJldmVudERlZmF1bHRzIHRoZSBldmVudCwgc28gRW50ZXIgbmV2ZXIgc3VibWl0cyB0aGUgZm9ybS5cbiAgICAgIFwiRW50ZXIgU3BhY2UgQXJyb3dVcCBBcnJvd0Rvd25cIjogKCkgPT4ge1xuICAgICAgICBvcGVuT3B0aW9uc0xpc3QoKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB0cmlnZ2VyUmVmLFxuICAgICFpc09wZW4gJiYgIWRpc2FibGVkXG4gICk7XG5cbiAgdXNlVHlwZUFoZWFkU2VhcmNoKHtcbiAgICBvcHRpb25zLFxuICAgIHRyaWdnZXJSZWYsXG4gICAgaXNBY3RpdmU6ICFkaXNhYmxlZCxcbiAgICBmcm9tSW5kZXg6IHNlbGVjdGVkSW5kZXggIT09IC0xID8gc2VsZWN0ZWRJbmRleCA6IGN1cnJlbnRPcHRpb25JbmRleCxcbiAgICBvbk1hdGNoOiBoYW5kbGVTZWFyY2hNYXRjaCxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0cmlnZ2VyRWxtID0gdHJpZ2dlclJlZi5jdXJyZW50O1xuICAgIC8vIHByZXZlbnQgZm9jdXMgb24gY2xpY2sgdG8gcHJldmVudCB0b2dnbGUgb3BlbiBzdGF0ZSBvbiBjbGljayBmb2xsb3dlZCBieSBmb2N1c1xuICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJEb3duOiBQb2ludGVyRXZlbnRIYW5kbGVyPEhUTUxCdXR0b25FbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH07XG5cbiAgICBpZiAodHJpZ2dlckVsbSAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIHRyaWdnZXJFbG0uc2V0QXR0cmlidXRlKFwidGFiSW5kZXhcIiwgXCIwXCIpOyAvLyBGb3IgU2FmYXJpLCBiZWNhdXNlcyBidXR0b25zIGFyZSBub3QgZm9jdXNhYmxlIGJ5IGRlZmF1bHRcbiAgICAgIHRyaWdnZXJFbG0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRvZ2dsZU9wdGlvbnNMaXN0KTtcbiAgICAgIC8vIE5vdGU6IGZvY3VzIG11c3QgTk9UIG9wZW4gdGhlIGxpc3QuIFRhYmJpbmcgdG8gdGhlIHRyaWdnZXIgc2hvdWxkIG9ubHlcbiAgICAgIC8vIG1vdmUgZm9jdXMgKEFSSUEgQVBHKS4gVGhlIGxpc3Qgb3BlbnMgb24gY2xpY2svRW50ZXIvU3BhY2UvQXJyb3cga2V5cy5cbiAgICAgIHRyaWdnZXJFbG0uYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgY2xvc2VPcHRpb25zTGlzdCk7XG4gICAgICB0cmlnZ2VyRWxtLmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBoYW5kbGVQb2ludGVyRG93bik7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRyaWdnZXJFbG0/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0b2dnbGVPcHRpb25zTGlzdCk7XG4gICAgICB0cmlnZ2VyRWxtPy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLCBjbG9zZU9wdGlvbnNMaXN0KTtcbiAgICAgIHRyaWdnZXJFbG0/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBoYW5kbGVQb2ludGVyRG93bik7XG4gICAgfTtcbiAgfSwgW3RyaWdnZXJSZWYsIGRpc2FibGVkLCBjbG9zZU9wdGlvbnNMaXN0LCB0b2dnbGVPcHRpb25zTGlzdF0pO1xuXG4gIGNvbnN0IG9wdGlvbnNMaXN0SWQgPSBnZXRPcHRpb25zTGlzdElkKG5hbWUpO1xuICBjb25zdCBhcmlhQWN0aXZlRGVzY2VuZGFudCA9XG4gICAgc2VsZWN0ZWRJbmRleCAhPT0gLTEgPyBnZXRPcHRpb25JZChuYW1lLCBvcHRpb25zW3NlbGVjdGVkSW5kZXhdLnZhbHVlKSA6IFwiXCI7XG4gIGNvbnN0IHRyaWdnZXJFbG0gPSByZW5kZXJUcmlnZ2VyKHtcbiAgICB0cmlnZ2VyUmVmLFxuICAgIGlzT3BlbixcbiAgICBkaXNhYmxlZCxcbiAgICByb2xlOiBcImNvbWJvYm94XCIsXG4gICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogaXNPcGVuID8gYXJpYUFjdGl2ZURlc2NlbmRhbnQgOiBcIlwiLFxuICAgIFwiYXJpYS1jb250cm9sc1wiOiBpc09wZW4gPyBvcHRpb25zTGlzdElkIDogXCJcIixcbiAgICBcImFyaWEtZXhwYW5kZWRcIjogaXNPcGVuLFxuICB9KTtcblxuICBjb25zdCBvcHRpb25zTGlzdEVsbSA9IChcbiAgICA8T3B0aW9uc0xpc3RcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBpc09wZW49e2lzT3Blbn1cbiAgICAgIGlzVmlydHVhbGl6ZWQ9e2ZhbHNlfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIHRyaWdnZXJSZWY9e3RyaWdnZXJSZWZ9XG4gICAgICBvbkNsb3NlRHJvcGRvd249e2Nsb3NlT3B0aW9uc0xpc3R9XG4gICAgICBwb3J0YWxDb250YWluZXI9e3BvcnRhbENvbnRhaW5lcn1cbiAgICAgIHNlbGVjdGVkSW5kZXg9e3NlbGVjdGVkSW5kZXh9XG4gICAgICBvblNlbGVjdGVkSW5kZXhDaGFuZ2U9e2hhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2V9XG4gICAgICBmb3JjZUNoYW5nZUZha2VTZWxlY3Q9e2hhbmRsZUNoYW5nZX1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIG1heEhlaWdodD17bWF4SGVpZ2h0fVxuICAgICAgb3B0aW9uc0xpc3RXaWR0aD17b3B0aW9uc0xpc3RXaWR0aH1cbiAgICAvPlxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHt0cmlnZ2VyRWxtfVxuICAgICAge29wdGlvbnNMaXN0RWxtfVxuICAgICAgPEhpZGRlblNlbGVjdElucHV0XG4gICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICByZWY9e2hpZGRlblNlbGVjdFJlZn1cbiAgICAgICAgYXV0b0NvbXBsZXRlPXthdXRvQ29tcGxldGV9XG4gICAgICA+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBhcmlhLWxhYmVsPVwiRW1wdHkgb3B0aW9uXCIgLz5cbiAgICAgICAge29wdGlvbnMubWFwKChvcHRpb24pID0+IChcbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPXtvcHRpb24udmFsdWV9IGtleT17b3B0aW9uLnZhbHVlfT5cbiAgICAgICAgICAgIHtvcHRpb24ubGFiZWx9XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICkpfVxuICAgICAgPC9IaWRkZW5TZWxlY3RJbnB1dD5cbiAgICA8Lz5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpRDBCIn0= */");export function SelectWithCustomTrigger({renderTrigger,optionsListWidth,options,name,value,portalContainer,disabled,maxHeight=230,autoComplete="on",readOnly=!1,onChange}){let[isOpen,setIsOpen]=useState(!1),[selectedIndex,setSelectedIndex]=useState(-1),triggerRef=useRef(null),hiddenSelectRef=useRef(null),currentOptionIndex=useMemo(()=>options.findIndex(option=>option.value===value),[options,value]),closeOptionsList=useCallback(()=>{isOpen&&(setIsOpen(!1),setSelectedIndex(-1))},[isOpen]),openOptionsList=useCallback(()=>{isOpen||readOnly||(setIsOpen(!0),triggerRef.current?.focus())},[isOpen,readOnly]),toggleOptionsList=useCallback(()=>{isOpen?closeOptionsList():openOptionsList()},[isOpen,openOptionsList,closeOptionsList]),handleSelectedIndexChange=useCallback(index=>setSelectedIndex(index),[]),handleChange=useCallback(option=>{hiddenSelectRef.current.value=option.value,hiddenSelectRef.current.dispatchEvent(new Event("change",{bubbles:!0}))},[hiddenSelectRef]),handleSearchMatch=useCallback(matchedIndex=>{-1!==matchedIndex&&(isOpen?setSelectedIndex(matchedIndex):handleChange(options[matchedIndex]))},[isOpen,options,setSelectedIndex,handleChange]);useKeyboard({"Enter Space ArrowUp ArrowDown":()=>{openOptionsList()}},triggerRef,!isOpen&&!disabled),useTypeAheadSearch({options,triggerRef,isActive:!disabled,fromIndex:-1!==selectedIndex?selectedIndex:currentOptionIndex,onMatch:handleSearchMatch}),useEffect(()=>{let triggerElm=triggerRef.current,handlePointerDown=evt=>{evt.preventDefault()};return triggerElm&&!disabled&&(triggerElm.setAttribute("tabIndex","0"),triggerElm.addEventListener("click",toggleOptionsList),triggerElm.addEventListener("blur",closeOptionsList),triggerElm.addEventListener("pointerdown",handlePointerDown)),()=>{triggerElm?.removeEventListener("click",toggleOptionsList),triggerElm?.removeEventListener("blur",closeOptionsList),triggerElm?.removeEventListener("pointerdown",handlePointerDown)}},[triggerRef,disabled,closeOptionsList,toggleOptionsList]);let optionsListId=getOptionsListId(name),ariaActiveDescendant=-1!==selectedIndex?getOptionId(name,options[selectedIndex].value):"",triggerElm=renderTrigger({triggerRef,isOpen,disabled,role:"combobox","aria-activedescendant":isOpen?ariaActiveDescendant:"","aria-controls":isOpen?optionsListId:"","aria-expanded":isOpen}),optionsListElm=React.createElement(OptionsList,{name:name,isOpen:isOpen,isVirtualized:!1,options:options,triggerRef:triggerRef,onCloseDropdown:closeOptionsList,portalContainer:portalContainer,selectedIndex:selectedIndex,onSelectedIndexChange:handleSelectedIndexChange,forceChangeFakeSelect:handleChange,value:value,disabled:disabled,maxHeight:maxHeight,optionsListWidth:optionsListWidth});return React.createElement(React.Fragment,null,triggerElm,optionsListElm,React.createElement(HiddenSelectInput,{name:name,onChange:onChange,value:value,ref:hiddenSelectRef,autoComplete:autoComplete},React.createElement("option",{value:"","aria-label":"Empty option"}),options.map(option=>React.createElement("option",{value:option.value,key:option.value},option.label))))}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ColumnKey, SidePanelKey, SlotKey } from "./-types";
|
|
2
|
+
export declare const SIDE_PANELS: SidePanelKey[];
|
|
3
|
+
export declare const COLUMNS: ColumnKey[];
|
|
4
|
+
/** Left-to-right column order in the resizable row. */
|
|
5
|
+
export declare const COLUMN_ORDER: SlotKey[];
|
|
6
|
+
/** Default mobile breakpoint (px, inclusive max). Matches the DS `m` token. */
|
|
7
|
+
export declare const DEFAULT_MOBILE_BREAKPOINT = 768;
|
|
8
|
+
/** Most in-flow columns allowed at once. A 4th request demotes the sidebar. */
|
|
9
|
+
export declare const MAX_VISIBLE_COLUMNS = 3;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const SIDE_PANELS=["sidebar","rightPanel"];export const COLUMNS=["content","splitview"];export const COLUMN_ORDER=["sidebar","content","splitview","rightPanel"];export const DEFAULT_MOBILE_BREAKPOINT=768;export const MAX_VISIBLE_COLUMNS=3;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Layout type contract (DS-1355, simplified direction).
|
|
4
|
+
*
|
|
5
|
+
* Surface = compound components (`Layout.Sidebar` / `Layout.RightPanel` /
|
|
6
|
+
* `Layout.Content` / `Layout.Split` / `Layout.Float`) + one control hook
|
|
7
|
+
* (`useLayout()`). The manager owns the open/collapsed/size state; components
|
|
8
|
+
* render per that state. State engine is replaceable (see `LayoutStore`).
|
|
9
|
+
*
|
|
10
|
+
* Slots (max 4 columns, max 3 visible at once — budget enforcement deferred):
|
|
11
|
+
* sidebar | content | splitview | rightPanel
|
|
12
|
+
*/
|
|
13
|
+
/** A size: plain number = pixels; unitless string = percentage ("10%"). */
|
|
14
|
+
export type Size = number | string;
|
|
15
|
+
/** Side-panel render style (shadcn-derived, AMBOSS-renamed; `inset` dropped). */
|
|
16
|
+
export type Variant = "sidebar" | "floating";
|
|
17
|
+
export type SidePanelKey = "sidebar" | "rightPanel";
|
|
18
|
+
export type ColumnKey = "content" | "splitview";
|
|
19
|
+
export type SlotKey = SidePanelKey | ColumnKey;
|
|
20
|
+
/**
|
|
21
|
+
* Effective render mode of a slot, after the requested→effective reconciler
|
|
22
|
+
* applies the mobile rule and the 3-column budget.
|
|
23
|
+
* column — in-flow resizable column
|
|
24
|
+
* floating — detached overlay panel (desktop)
|
|
25
|
+
* sheet — full-height overlay + backdrop (mobile)
|
|
26
|
+
* hidden — not rendered
|
|
27
|
+
*/
|
|
28
|
+
export type SlotMode = "column" | "floating" | "sheet" | "hidden";
|
|
29
|
+
export type EffectiveModes = Record<SlotKey, SlotMode>;
|
|
30
|
+
/** Float anchor. */
|
|
31
|
+
export type Align = "left" | "center" | "right";
|
|
32
|
+
export type VAlign = "top" | "center" | "bottom";
|
|
33
|
+
export type SidePanelState = {
|
|
34
|
+
kind: "sidePanel";
|
|
35
|
+
/** Expanded/visible vs collapsed/off. */
|
|
36
|
+
open: boolean;
|
|
37
|
+
/** Whether it can collapse at all. */
|
|
38
|
+
collapsible: boolean;
|
|
39
|
+
/** Render style. */
|
|
40
|
+
variant: Variant;
|
|
41
|
+
/** Current size (px number or "%" string). */
|
|
42
|
+
size?: Size;
|
|
43
|
+
};
|
|
44
|
+
export type ColumnState = {
|
|
45
|
+
kind: "column";
|
|
46
|
+
/** content is always visible; splitview is toggleable. */
|
|
47
|
+
visible: boolean;
|
|
48
|
+
size?: Size;
|
|
49
|
+
};
|
|
50
|
+
export type LayoutState = {
|
|
51
|
+
sidebar: SidePanelState;
|
|
52
|
+
rightPanel: SidePanelState;
|
|
53
|
+
content: ColumnState;
|
|
54
|
+
splitview: ColumnState;
|
|
55
|
+
};
|
|
56
|
+
export type SidePanelConfig = {
|
|
57
|
+
defaultOpen?: boolean;
|
|
58
|
+
collapsible?: boolean;
|
|
59
|
+
variant?: Variant;
|
|
60
|
+
defaultSize?: Size;
|
|
61
|
+
minSize?: Size;
|
|
62
|
+
maxSize?: Size;
|
|
63
|
+
};
|
|
64
|
+
export type ColumnConfig = {
|
|
65
|
+
defaultVisible?: boolean;
|
|
66
|
+
defaultSize?: Size;
|
|
67
|
+
minSize?: Size;
|
|
68
|
+
maxSize?: Size;
|
|
69
|
+
};
|
|
70
|
+
export type LayoutConfig = {
|
|
71
|
+
sidebar?: SidePanelConfig;
|
|
72
|
+
rightPanel?: SidePanelConfig;
|
|
73
|
+
content?: ColumnConfig;
|
|
74
|
+
splitview?: ColumnConfig;
|
|
75
|
+
};
|
|
76
|
+
/** Per-slot partial patch (used by hydrate + reload persistence). */
|
|
77
|
+
export type LayoutStatePatch = {
|
|
78
|
+
sidebar?: Partial<SidePanelState>;
|
|
79
|
+
rightPanel?: Partial<SidePanelState>;
|
|
80
|
+
content?: Partial<ColumnState>;
|
|
81
|
+
splitview?: Partial<ColumnState>;
|
|
82
|
+
};
|
|
83
|
+
export type LayoutAction = {
|
|
84
|
+
type: "setOpen";
|
|
85
|
+
panel: SidePanelKey;
|
|
86
|
+
open: boolean;
|
|
87
|
+
} | {
|
|
88
|
+
type: "toggleOpen";
|
|
89
|
+
panel: SidePanelKey;
|
|
90
|
+
} | {
|
|
91
|
+
type: "setVariant";
|
|
92
|
+
panel: SidePanelKey;
|
|
93
|
+
variant: Variant;
|
|
94
|
+
} | {
|
|
95
|
+
type: "setColumnVisible";
|
|
96
|
+
column: ColumnKey;
|
|
97
|
+
visible: boolean;
|
|
98
|
+
} | {
|
|
99
|
+
type: "resize";
|
|
100
|
+
slot: SlotKey;
|
|
101
|
+
size: Size;
|
|
102
|
+
} | {
|
|
103
|
+
type: "hydrate";
|
|
104
|
+
state: LayoutStatePatch;
|
|
105
|
+
};
|
|
106
|
+
export type LayoutReducer = (state: LayoutState, action: LayoutAction) => LayoutState;
|
|
107
|
+
/**
|
|
108
|
+
* Replaceable state engine. Matches `useSyncExternalStore` + zustand/redux
|
|
109
|
+
* conventions. The manager depends only on this interface, so a zustand-backed
|
|
110
|
+
* store can be injected via `<LayoutProvider store={…}>`.
|
|
111
|
+
*/
|
|
112
|
+
export type LayoutStore = {
|
|
113
|
+
getState: () => LayoutState;
|
|
114
|
+
dispatch: (action: LayoutAction) => void;
|
|
115
|
+
subscribe: (listener: () => void) => () => void;
|
|
116
|
+
};
|
|
117
|
+
export type LayoutStorage = {
|
|
118
|
+
getItem: (key: string) => string | null;
|
|
119
|
+
setItem: (key: string, value: string) => void;
|
|
120
|
+
};
|
|
121
|
+
export type SidePanelHandle = {
|
|
122
|
+
state: SidePanelState;
|
|
123
|
+
isOpen: boolean;
|
|
124
|
+
open: () => void;
|
|
125
|
+
close: () => void;
|
|
126
|
+
toggle: () => void;
|
|
127
|
+
resize: (size: Size) => void;
|
|
128
|
+
setVariant: (variant: Variant) => void;
|
|
129
|
+
};
|
|
130
|
+
export type ColumnHandle = {
|
|
131
|
+
state: ColumnState;
|
|
132
|
+
isVisible: boolean;
|
|
133
|
+
show: () => void;
|
|
134
|
+
hide: () => void;
|
|
135
|
+
toggle: () => void;
|
|
136
|
+
resize: (size: Size) => void;
|
|
137
|
+
};
|
|
138
|
+
export type LayoutValue = {
|
|
139
|
+
state: LayoutState;
|
|
140
|
+
sidebar: SidePanelHandle;
|
|
141
|
+
rightPanel: SidePanelHandle;
|
|
142
|
+
content: ColumnHandle;
|
|
143
|
+
splitview: ColumnHandle;
|
|
144
|
+
/** True at/below the mobile breakpoint — side panels render as a sheet. */
|
|
145
|
+
isMobile: boolean;
|
|
146
|
+
/** Effective render mode per slot after the reconciler (mobile + budget). */
|
|
147
|
+
modes: EffectiveModes;
|
|
148
|
+
};
|
|
149
|
+
export type SidePanelProps = {
|
|
150
|
+
children: React.ReactNode;
|
|
151
|
+
variant?: Variant;
|
|
152
|
+
collapsible?: boolean;
|
|
153
|
+
defaultSize?: Size;
|
|
154
|
+
minSize?: Size;
|
|
155
|
+
maxSize?: Size;
|
|
156
|
+
};
|
|
157
|
+
export type ContentProps = {
|
|
158
|
+
children: React.ReactNode;
|
|
159
|
+
minSize?: Size;
|
|
160
|
+
maxSize?: Size;
|
|
161
|
+
};
|
|
162
|
+
export type SplitProps = {
|
|
163
|
+
children: React.ReactNode;
|
|
164
|
+
defaultSize?: Size;
|
|
165
|
+
minSize?: Size;
|
|
166
|
+
maxSize?: Size;
|
|
167
|
+
};
|
|
168
|
+
export type FloatProps = {
|
|
169
|
+
children: React.ReactNode;
|
|
170
|
+
align: Align;
|
|
171
|
+
valign: VAlign;
|
|
172
|
+
};
|
|
173
|
+
export type LayoutProviderProps = {
|
|
174
|
+
children: React.ReactNode;
|
|
175
|
+
config?: LayoutConfig;
|
|
176
|
+
store?: LayoutStore;
|
|
177
|
+
persistenceKey?: string;
|
|
178
|
+
storage?: LayoutStorage;
|
|
179
|
+
/** Mobile breakpoint in px (inclusive max). Defaults to the DS `m` token. */
|
|
180
|
+
mobileBreakpoint?: number;
|
|
181
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
import { LayoutProvider } from "./LayoutProvider";
|
|
4
|
+
import type { ContentProps, FloatProps, LayoutProviderProps, SidePanelProps, SplitProps } from "./-types";
|
|
5
|
+
declare const Sidebar: React.FC<SidePanelProps>;
|
|
6
|
+
declare const RightPanel: React.FC<SidePanelProps>;
|
|
7
|
+
declare const Content: React.FC<ContentProps>;
|
|
8
|
+
declare const Split: React.FC<SplitProps>;
|
|
9
|
+
declare const Float: React.FC<FloatProps>;
|
|
10
|
+
declare function LayoutShell({ children, }: {
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}): React.ReactElement;
|
|
13
|
+
type LayoutComponent = React.FC<LayoutProviderProps> & {
|
|
14
|
+
Sidebar: typeof Sidebar;
|
|
15
|
+
RightPanel: typeof RightPanel;
|
|
16
|
+
Content: typeof Content;
|
|
17
|
+
Split: typeof Split;
|
|
18
|
+
Float: typeof Float;
|
|
19
|
+
/** Context only (store + mobile breakpoint). Use with `Layout.Shell` when you
|
|
20
|
+
* need chrome (e.g. a NavBar) that calls `useLayout()` but sits OUTSIDE the
|
|
21
|
+
* resizable shell. For the common case use `<Layout>` (provider + shell). */
|
|
22
|
+
Provider: typeof LayoutProvider;
|
|
23
|
+
/** The resizable shell (columns + overlays + floats). Must be rendered inside
|
|
24
|
+
* a `Layout.Provider`. Holds the column markers. */
|
|
25
|
+
Shell: typeof LayoutShell;
|
|
26
|
+
};
|
|
27
|
+
export declare const Layout: LayoutComponent;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import React,{createContext,useContext,useEffect,useMemo,useState}from"react";import{createPortal}from"react-dom";import{Group,Panel,Separator}from"react-resizable-panels";import{COLUMN_ORDER}from"./-constants";import{LayoutProvider}from"./LayoutProvider";import{useHostNodes}from"./useHostNodes";import{useLayout}from"./useLayout";let VALIGNS=["top","center","bottom"],columnHostKey=slot=>`col-${slot}`,overlayHostKey=slot=>`ov-${slot}`,floatHostKey=(align,valign)=>`fl-${align}-${valign}`,FLOAT_HOST_KEYS=["left","center","right"].flatMap(a=>VALIGNS.map(v=>floatHostKey(a,v))),HOST_KEYS=[...COLUMN_ORDER.map(columnHostKey),overlayHostKey("sidebar"),overlayHostKey("rightPanel"),...FLOAT_HOST_KEYS],HostContext=createContext({});function useHost(key){return useContext(HostContext)[key]??null}let ColumnRegistryContext=createContext(null),FloatRegistryContext=createContext(null);function useDeclareColumn(slot,reg){let registry=useContext(ColumnRegistryContext),{minSize,maxSize,collapsible}=reg;useEffect(()=>{if(registry)return registry.register(slot,{minSize,maxSize,collapsible}),()=>registry.unregister(slot)},[registry,slot,minSize,maxSize,collapsible])}function sideHostKey(slot,mode){return"column"===mode?columnHostKey(slot):"floating"===mode||"sheet"===mode?overlayHostKey(slot):null}function portalInto(node,children){return node?createPortal(children,node):null}let Sidebar=({children,minSize,maxSize,collapsible=!0})=>{useDeclareColumn("sidebar",{minSize,maxSize,collapsible});let{modes}=useLayout();return portalInto(useHost(sideHostKey("sidebar",modes.sidebar)??""),children)};Sidebar.displayName="Layout.Sidebar";let RightPanel=({children,minSize,maxSize,collapsible=!0})=>{useDeclareColumn("rightPanel",{minSize,maxSize,collapsible});let{modes}=useLayout();return portalInto(useHost(sideHostKey("rightPanel",modes.rightPanel)??""),children)};RightPanel.displayName="Layout.RightPanel";let Content=({children,minSize,maxSize})=>(useDeclareColumn("content",{minSize,maxSize,collapsible:!1}),portalInto(useHost(columnHostKey("content")),children));Content.displayName="Layout.Content";let Split=({children,minSize,maxSize})=>{useDeclareColumn("splitview",{minSize,maxSize,collapsible:!0});let{modes}=useLayout(),host=useHost(columnHostKey("splitview"));return"column"===modes.splitview?portalInto(host,children):null};Split.displayName="Layout.Split";let Float=({children,align,valign})=>{let anchor=floatHostKey(align,valign),registry=useContext(FloatRegistryContext);useEffect(()=>{if(registry)return registry.acquire(anchor),()=>registry.release(anchor)},[registry,anchor]);let node=useHost(anchor);return node?createPortal(React.createElement("div",{style:{pointerEvents:"auto"}},children),node):null};function ColumnRow({columns,declared,sizes,hostFor,onResize,onCollapse}){return React.createElement(Group,{orientation:"horizontal",style:{height:"100%",width:"100%"},onLayoutChanged:layout=>{columns.forEach(slot=>{let pct=layout[slot];if("number"!=typeof pct)return;let reg=declared[slot];if((reg?.collapsible??"splitview"===slot)&&pct<.5)return void onCollapse(slot);pct>=.5&&onResize(slot,`${pct}%`)})}},columns.map((slot,index)=>{let reg=declared[slot]??{};return React.createElement(React.Fragment,{key:slot},index>0&&React.createElement(Separator,null),React.createElement(Panel,{id:slot,defaultSize:"content"===slot?void 0:sizes[slot],collapsible:"content"!==slot,minSize:reg.minSize,maxSize:reg.maxSize},React.createElement("div",{ref:hostFor(columnHostKey(slot)),style:{position:"relative",height:"100%",width:"100%"}})))}))}function SideOverlay({side,sheet,onClose,hostRef}){return React.createElement(React.Fragment,null,sheet&&React.createElement("button",{type:"button","aria-label":"Close","data-ds-id":"LayoutSheetBackdrop",onClick:onClose,style:{position:"absolute",inset:0,border:"none",padding:0,cursor:"pointer",background:"rgba(0,0,0,.4)",pointerEvents:"auto",zIndex:1e3}}),React.createElement("div",{"data-ds-id":"LayoutSideOverlay",style:{position:"absolute",top:12*!sheet,bottom:12*!sheet,[side]:12*!sheet,width:sheet?"80%":320,maxWidth:"90%",background:"var(--ds-surface, #fff)",boxShadow:"0 8px 32px rgba(0,0,0,.2)",borderRadius:8*!sheet,overflow:"auto",pointerEvents:"auto",zIndex:1001},ref:hostRef}))}Float.displayName="Layout.Float";let ALIGN_CSS={left:{left:12,alignItems:"flex-start"},center:{left:"50%",transform:"translateX(-50%)",alignItems:"center"},right:{right:12,alignItems:"flex-end"}},VALIGN_CSS={top:{top:12},center:{top:"50%"},bottom:{bottom:12}};function FloatAnchors({anchors,hostFor}){return React.createElement(React.Fragment,null,anchors.map(key=>{let[align,valign]=key.slice(3).split("-");return React.createElement("div",{key:key,"data-ds-id":`LayoutFloat-${align}-${valign}`,ref:hostFor(key),style:{position:"absolute",display:"flex",zIndex:1002,pointerEvents:"none",...ALIGN_CSS[align],...VALIGN_CSS[valign]}})}))}function LayoutShell({children}){let layout=useLayout(),{state,modes}=layout,[declared,setDeclared]=useState({}),registry=useMemo(()=>({register:(slot,reg)=>setDeclared(prev=>({...prev,[slot]:reg})),unregister:slot=>setDeclared(prev=>{if(!(slot in prev))return prev;let next={...prev};return delete next[slot],next})}),[]),[floatCounts,setFloatCounts]=useState({}),floatRegistry=useMemo(()=>({acquire:anchor=>setFloatCounts(prev=>({...prev,[anchor]:(prev[anchor]??0)+1})),release:anchor=>setFloatCounts(prev=>{let next={...prev},count=(next[anchor]??0)-1;return count<=0?delete next[anchor]:next[anchor]=count,next})}),[]),floatAnchors=Object.keys(floatCounts),[nodes,hostCallbacks]=useHostNodes(HOST_KEYS),hostFor=key=>hostCallbacks[key],columns=COLUMN_ORDER.filter(slot=>declared[slot]&&"column"===modes[slot]),sizes={};columns.forEach(slot=>{sizes[slot]="content"===slot?void 0:state[slot].size});let sideOverlay=(slot,side)=>{let mode=modes[slot];return declared[slot]&&("floating"===mode||"sheet"===mode)?React.createElement(SideOverlay,{side:side,sheet:"sheet"===mode,onClose:()=>layout[slot].close(),hostRef:hostFor(overlayHostKey(slot))}):null};return React.createElement(ColumnRegistryContext.Provider,{value:registry},React.createElement(FloatRegistryContext.Provider,{value:floatRegistry},React.createElement(HostContext.Provider,{value:nodes},React.createElement("div",{"data-ds-id":"Layout",style:{position:"relative",height:"100%",width:"100%"}},columns.length>0&&React.createElement(ColumnRow,{columns:columns,declared:declared,sizes:sizes,hostFor:hostFor,onResize:(key,size)=>layout[key].resize(size),onCollapse:key=>{"sidebar"===key||"rightPanel"===key?layout[key].close():layout[key].hide()}}),sideOverlay("sidebar","left"),sideOverlay("rightPanel","right"),React.createElement(FloatAnchors,{anchors:floatAnchors,hostFor:hostFor}),children))))}export const Layout=({children,...rest})=>React.createElement(LayoutProvider,rest,React.createElement(LayoutShell,null,children));Layout.Sidebar=Sidebar,Layout.RightPanel=RightPanel,Layout.Content=Content,Layout.Split=Split,Layout.Float=Float,Layout.Provider=LayoutProvider,Layout.Shell=LayoutShell;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { LayoutProviderProps } from "./-types";
|
|
3
|
+
/**
|
|
4
|
+
* Owns the state engine + publishes the mobile breakpoint. Mount once, above the
|
|
5
|
+
* router. Pass `store` to replace the default vanilla engine with a
|
|
6
|
+
* zustand/redux-backed one; otherwise a default store is built from `config`.
|
|
7
|
+
* Hydrates from `persistenceKey` at init and saves (debounced) on change.
|
|
8
|
+
*/
|
|
9
|
+
export declare function LayoutProvider({ children, config, store, persistenceKey, storage, mobileBreakpoint, }: LayoutProviderProps): React.ReactElement;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import React,{useEffect,useRef}from"react";import{LayoutStoreProvider,MobileBreakpointProvider}from"./context";import{applyPatch,loadSnapshot,resolveStorage,saveSnapshot}from"./persistence";import{createInitialState}from"./reducer";import{createLayoutStore}from"./store";export function LayoutProvider({children,config,store,persistenceKey,storage,mobileBreakpoint}){let storeRef=useRef(null);if(null===storeRef.current){let initial=createInitialState(config);if(persistenceKey){let snapshot=loadSnapshot(resolveStorage(storage),persistenceKey);snapshot&&(initial=applyPatch(initial,snapshot))}storeRef.current=store??createLayoutStore(initial)}return useEffect(()=>{let timer;if(!persistenceKey)return;let backend=resolveStorage(storage),activeStore=storeRef.current;if(!backend||!activeStore)return;let unsubscribe=activeStore.subscribe(()=>{timer&&clearTimeout(timer),timer=setTimeout(()=>saveSnapshot(backend,persistenceKey,activeStore.getState()),200)});return()=>{timer&&clearTimeout(timer),unsubscribe()}},[persistenceKey,storage]),React.createElement(LayoutStoreProvider,{value:storeRef.current},React.createElement(MobileBreakpointProvider,{value:mobileBreakpoint},children))}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { LayoutState, LayoutStore } from "./-types";
|
|
2
|
+
export declare const LayoutStoreProvider: React.Provider<LayoutStore>;
|
|
3
|
+
/** Get the store from context, or throw if used outside the provider. */
|
|
4
|
+
export declare function useLayoutStore(): LayoutStore;
|
|
5
|
+
export declare const MobileBreakpointProvider: React.Provider<number>;
|
|
6
|
+
export declare function useMobileBreakpoint(): number | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Subscribe to a slice of layout state via `useSyncExternalStore`. The selector
|
|
9
|
+
* should return a stable reference when nothing relevant changed — the reducer
|
|
10
|
+
* preserves references for untouched positions, so slice selectors are safe.
|
|
11
|
+
*/
|
|
12
|
+
export declare function useLayoutSelector<T>(selector: (state: LayoutState) => T): T;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createContext,useContext,useSyncExternalStore}from"react";let LayoutStoreContext=createContext(null);export const LayoutStoreProvider=LayoutStoreContext.Provider;export function useLayoutStore(){let store=useContext(LayoutStoreContext);if(!store)throw Error("useLayout must be used within a <LayoutProvider>.");return store}let MobileBreakpointContext=createContext(void 0);export const MobileBreakpointProvider=MobileBreakpointContext.Provider;export function useMobileBreakpoint(){return useContext(MobileBreakpointContext)}export function useLayoutSelector(selector){let store=useLayoutStore(),getSnapshot=()=>selector(store.getState());return useSyncExternalStore(store.subscribe,getSnapshot,getSnapshot)}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { Layout } from "./Layout";
|
|
2
|
+
export { LayoutProvider } from "./LayoutProvider";
|
|
3
|
+
export { useLayout } from "./useLayout";
|
|
4
|
+
export { useIsMobile } from "./useIsMobile";
|
|
5
|
+
export { createLayoutStore } from "./store";
|
|
6
|
+
export { createInitialState, layoutReducer } from "./reducer";
|
|
7
|
+
export * from "./-types";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{Layout}from"./Layout";export{LayoutProvider}from"./LayoutProvider";export{useLayout}from"./useLayout";export{useIsMobile}from"./useIsMobile";export{createLayoutStore}from"./store";export{createInitialState,layoutReducer}from"./reducer";export*from"./-types";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LayoutState, LayoutStatePatch, LayoutStorage } from "./-types";
|
|
2
|
+
export declare function resolveStorage(storage?: LayoutStorage): LayoutStorage | undefined;
|
|
3
|
+
export declare function serializeState(state: LayoutState): LayoutStatePatch;
|
|
4
|
+
export declare function applyPatch(state: LayoutState, patch: LayoutStatePatch): LayoutState;
|
|
5
|
+
export declare function loadSnapshot(storage: LayoutStorage | undefined, key: string): LayoutStatePatch | null;
|
|
6
|
+
export declare function saveSnapshot(storage: LayoutStorage | undefined, key: string, state: LayoutState): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function resolveStorage(storage){return storage||("undefined"!=typeof window&&window.localStorage?window.localStorage:void 0)}export function serializeState(state){return{sidebar:{open:state.sidebar.open,variant:state.sidebar.variant,size:state.sidebar.size},rightPanel:{open:state.rightPanel.open,variant:state.rightPanel.variant,size:state.rightPanel.size},content:{size:state.content.size},splitview:{visible:state.splitview.visible,size:state.splitview.size}}}export function applyPatch(state,patch){let next={...state};return Object.keys(patch).forEach(key=>{let incoming=patch[key];incoming&&(next[key]={...next[key],...incoming})}),next}export function loadSnapshot(storage,key){if(!storage)return null;try{let raw=storage.getItem(key);if(!raw)return null;let parsed=JSON.parse(raw);if(!parsed||1!==parsed.v||"object"!=typeof parsed.state)return null;return parsed.state}catch{return null}}export function saveSnapshot(storage,key,state){if(storage)try{let payload={v:1,state:serializeState(state)};storage.setItem(key,JSON.stringify(payload))}catch{}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{COLUMN_ORDER,MAX_VISIBLE_COLUMNS}from"./-constants";function sideMode(slot,isMobile){return slot.open?isMobile?"sheet":"floating"===slot.variant?"floating":"column":"hidden"}export function resolveModes(state,isMobile){let modes={content:"column",splitview:state.splitview.visible?"column":"hidden",sidebar:sideMode(state.sidebar,isMobile),rightPanel:sideMode(state.rightPanel,isMobile)};return COLUMN_ORDER.filter(key=>"column"===modes[key]).length>MAX_VISIBLE_COLUMNS&&"column"===modes.sidebar&&(modes.sidebar="floating"),modes}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { LayoutConfig, LayoutReducer, LayoutState } from "./-types";
|
|
2
|
+
/** Build the initial state from optional config. */
|
|
3
|
+
export declare function createInitialState(config?: LayoutConfig): LayoutState;
|
|
4
|
+
/** Pure reducer. Returns the same reference when nothing changes. */
|
|
5
|
+
export declare const layoutReducer: LayoutReducer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function sidePanel(config={}){return{kind:"sidePanel",open:config.defaultOpen??!0,collapsible:config.collapsible??!0,variant:config.variant??"sidebar",size:config.defaultSize}}function column(config={}){return{kind:"column",visible:config.defaultVisible??!0,size:config.defaultSize}}export function createInitialState(config={}){return{sidebar:sidePanel(config.sidebar),rightPanel:sidePanel({defaultOpen:!1,...config.rightPanel}),content:column(config.content),splitview:column({defaultVisible:!1,...config.splitview})}}export const layoutReducer=(state,action)=>{switch(action.type){case"setOpen":{let panel=state[action.panel];if(panel.open===action.open)return state;return{...state,[action.panel]:{...panel,open:action.open}}}case"toggleOpen":{let panel=state[action.panel];return{...state,[action.panel]:{...panel,open:!panel.open}}}case"setVariant":{let panel=state[action.panel];if(panel.variant===action.variant)return state;return{...state,[action.panel]:{...panel,variant:action.variant}}}case"setColumnVisible":{let col=state[action.column];if(col.visible===action.visible)return state;return{...state,[action.column]:{...col,visible:action.visible}}}case"resize":{let slot=state[action.slot];if(slot.size===action.size)return state;return{...state,[action.slot]:{...slot,size:action.size}}}case"hydrate":{let next=state;return Object.keys(action.state).forEach(key=>{let incoming=action.state[key];incoming&&(next={...next,[key]:{...next[key],...incoming}})}),next}default:return state}};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LayoutState, LayoutStore } from "./-types";
|
|
2
|
+
/**
|
|
3
|
+
* Default, dependency-free `LayoutStore` implementation: a tiny pub/sub wrapper
|
|
4
|
+
* around the pure `layoutReducer`. Skips notifying subscribers when an action is
|
|
5
|
+
* a no-op (reducer returns the same reference).
|
|
6
|
+
*
|
|
7
|
+
* Swap this for a zustand/redux-backed store by implementing the same
|
|
8
|
+
* `LayoutStore` interface — bindings and primitives are unaffected.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createLayoutStore(initial: LayoutState): LayoutStore;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{layoutReducer}from"./reducer";export function createLayoutStore(initial){let state=initial,listeners=new Set;return{getState:()=>state,dispatch:action=>{let next=layoutReducer(state,action);next!==state&&(state=next,listeners.forEach(listener=>listener()))},subscribe:listener=>(listeners.add(listener),()=>{listeners.delete(listener)})}}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manage a map of published DOM host nodes plus stable per-key ref callbacks.
|
|
3
|
+
* Stable callbacks mean React attaches them only on mount/unmount instead of
|
|
4
|
+
* detach/attach every render (which would loop with setState).
|
|
5
|
+
*/
|
|
6
|
+
export declare function useHostNodes<P extends string>(positions: readonly P[]): [
|
|
7
|
+
Partial<Record<P, HTMLElement | null>>,
|
|
8
|
+
Record<P, (el: HTMLElement | null) => void>
|
|
9
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useMemo,useState}from"react";export function useHostNodes(positions){let[nodes,setNodes]=useState({});return[nodes,useMemo(()=>{let map={};return positions.forEach(position=>{map[position]=el=>setNodes(prev=>prev[position]===el?prev:{...prev,[position]:el})}),map},[positions])]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useSyncExternalStore}from"react";import{DEFAULT_MOBILE_BREAKPOINT}from"./-constants";export function useIsMobile(breakpoint=DEFAULT_MOBILE_BREAKPOINT){let query=`(max-width: ${breakpoint}px)`;return useSyncExternalStore(onChange=>{if("undefined"==typeof window||!window.matchMedia)return()=>{};let mql=window.matchMedia(query);return mql.addEventListener("change",onChange),()=>mql.removeEventListener("change",onChange)},()=>"undefined"!=typeof window&&!!window.matchMedia&&window.matchMedia(query).matches,()=>!1)}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LayoutValue } from "./-types";
|
|
2
|
+
/**
|
|
3
|
+
* The single control hook. Returns `state` plus a typed handle per slot and the
|
|
4
|
+
* current `isMobile` flag. Works from any descendant of `<LayoutProvider>` —
|
|
5
|
+
* remote control without prop drilling.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useLayout(): LayoutValue;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useLayoutSelector,useLayoutStore,useMobileBreakpoint}from"./context";import{resolveModes}from"./reconcile";import{useIsMobile}from"./useIsMobile";let selectAll=state=>state;function sidePanelHandle(panel,state,dispatch){let slot=state[panel];return{state:slot,isOpen:slot.open,open:()=>dispatch({type:"setOpen",panel,open:!0}),close:()=>dispatch({type:"setOpen",panel,open:!1}),toggle:()=>dispatch({type:"toggleOpen",panel}),resize:size=>dispatch({type:"resize",slot:panel,size}),setVariant:variant=>dispatch({type:"setVariant",panel,variant})}}function columnHandle(column,state,dispatch){let slot=state[column];return{state:slot,isVisible:slot.visible,show:()=>dispatch({type:"setColumnVisible",column,visible:!0}),hide:()=>dispatch({type:"setColumnVisible",column,visible:!1}),toggle:()=>dispatch({type:"setColumnVisible",column,visible:!slot.visible}),resize:size=>dispatch({type:"resize",slot:column,size})}}export function useLayout(){let store=useLayoutStore(),state=useLayoutSelector(selectAll),{dispatch}=store,isMobile=useIsMobile(useMobileBreakpoint());return{state,sidebar:sidePanelHandle("sidebar",state,dispatch),rightPanel:sidePanelHandle("rightPanel",state,dispatch),content:columnHandle("content",state,dispatch),splitview:columnHandle("splitview",state,dispatch),isMobile,modes:resolveModes(state,isMobile)}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{forwardRef,useEffect}from"react";import styled from"@emotion/styled";import{getInputTextPlaceholder}from"../../shared/mixins/TextInput/getInputTextPlaceholder";import{ScreenReaderText}from"../Utilities/ScreenReaderText/ScreenReaderText";import{getAutocompleteListId}from"./AutocompleteList";export const getPaddingHorizontal=(theme,size)=>"s"===size?theme.variables.size.spacing.s:theme.variables.size.spacing.m;export const getPaddingVertical=(theme,size)=>"s"===size?theme.variables.size.spacing.xs:theme.variables.size.spacing.m;let StyledTextAreaContainer=styled("label",{target:"e1dkp55d0",label:"StyledTextAreaContainer"})(({theme,maxTextAreaHeight,hasLeftIcon,size})=>{let paddingTop=getPaddingVertical(theme,size),paddingBottom=getPaddingVertical(theme,size),iconTextGap="s"===size?`calc(${theme.variables.size.spacing.xs} - ${theme.variables.size.spacing.xxxs})`:theme.variables.size.spacing.xs,basePaddingHorizontal=getPaddingHorizontal(theme,size),paddingRight=`calc(${basePaddingHorizontal} + ${theme.variables.size.dimension.icon.m} + ${iconTextGap})`,paddingLeft=hasLeftIcon?`calc(${basePaddingHorizontal} + ${theme.variables.size.dimension.icon[size]} + ${iconTextGap})`:basePaddingHorizontal;return{display:"grid",verticalAlign:"top",alignItems:"stretch",width:"100%",borderRadius:"inherit",position:"relative",fontFamily:theme.variables.fontFamily.lato,fontSize:theme.variables.size.font.m,lineHeight:theme.variables.size.lineHeight.xl,"&::after":{content:"attr(data-value) ' '",boxSizing:"border-box",fontFamily:theme.variables.fontFamily.lato,fontSize:theme.variables.size.font.m,gridArea:"1 / 1",whiteSpace:"pre-wrap",visibility:"hidden",maxHeight:maxTextAreaHeight},textarea:{all:"unset",resize:"none",gridArea:"1 / 1",cursor:"text",color:theme.values.color.text.primary.default,...getInputTextPlaceholder({theme})},"textarea::placeholder":{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden"},"&::after, textarea":{minWidth:"0",overflowWrap:"break-word",padding:`${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`}}},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0VGV4dEFyZWEudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRUZXh0QXJlYS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWZPYmplY3QsIFRleHRhcmVhSFRNTEF0dHJpYnV0ZXMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgVGhlbWUgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJjc3N0eXBlXCI7XG5pbXBvcnQgdHlwZSB7IFByb21wdElucHV0U2l6ZXMgfSBmcm9tIFwic3JjL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRJbnB1dFRleHRQbGFjZWhvbGRlciB9IGZyb20gXCIuLi8uLi9zaGFyZWQvbWl4aW5zL1RleHRJbnB1dC9nZXRJbnB1dFRleHRQbGFjZWhvbGRlclwiO1xuaW1wb3J0IHsgU2NyZWVuUmVhZGVyVGV4dCB9IGZyb20gXCIuLi9VdGlsaXRpZXMvU2NyZWVuUmVhZGVyVGV4dC9TY3JlZW5SZWFkZXJUZXh0XCI7XG5pbXBvcnQgeyBnZXRBdXRvY29tcGxldGVMaXN0SWQgfSBmcm9tIFwiLi9BdXRvY29tcGxldGVMaXN0XCI7XG5pbXBvcnQgdHlwZSB7IEZsYXR0ZW5lZExpc3RJdGVtIH0gZnJvbSBcIi4vQ2F0ZWdvcnlMaXN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRQYWRkaW5nSG9yaXpvbnRhbCA9IChcbiAgdGhlbWU6IFRoZW1lLFxuICBzaXplOiBQcm9tcHRJbnB1dFNpemVzXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAoc2l6ZSA9PT0gXCJzXCIpIHJldHVybiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnM7XG4gIHJldHVybiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLm07XG59O1xuZXhwb3J0IGNvbnN0IGdldFBhZGRpbmdWZXJ0aWNhbCA9IChcbiAgdGhlbWU6IFRoZW1lLFxuICBzaXplOiBQcm9tcHRJbnB1dFNpemVzXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAoc2l6ZSA9PT0gXCJzXCIpIHJldHVybiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnhzO1xuICByZXR1cm4gdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5tO1xufTtcblxuZXhwb3J0IHR5cGUgUHJvbXB0VGV4dEFyZWFQcm9wcyA9XG4gIFRleHRhcmVhSFRNTEF0dHJpYnV0ZXM8SFRNTFRleHRBcmVhRWxlbWVudD4gJiB7XG4gICAgZGF0YUUyZVRlc3RJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIG1heFRleHRBcmVhSGVpZ2h0PzogUHJvcGVydHkuSGVpZ2h0O1xuICAgIHNlbGVjdGVkTGlzdEl0ZW0/OiBGbGF0dGVuZWRMaXN0SXRlbTtcbiAgICBpc0F1dG9jb21wbGV0ZUxpc3RPcGVuPzogYm9vbGVhbjtcbiAgICBoYXNMZWZ0SWNvbj86IGJvb2xlYW47XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzaXplOiBQcm9tcHRJbnB1dFNpemVzO1xuICB9O1xuXG50eXBlIFN0eWxlZFRleHRBcmVhQ29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBQcm9tcHRUZXh0QXJlYVByb3BzLFxuICBcIm1heFRleHRBcmVhSGVpZ2h0XCIgfCBcImhhc0xlZnRJY29uXCIgfCBcInNpemVcIlxuPjtcblxuLy8gVGV4dGFyZWEgYXV0byBncm93IGltcGxlbWVudGVkIGFjY29yZGluZyB0byBodHRwczovL2Nzcy10cmlja3MuY29tL3RoZS1jbGVhbmVzdC10cmljay1mb3ItYXV0b2dyb3dpbmctdGV4dGFyZWFzL1xuXG5jb25zdCBTdHlsZWRUZXh0QXJlYUNvbnRhaW5lciA9IHN0eWxlZC5sYWJlbDxTdHlsZWRUZXh0QXJlYUNvbnRhaW5lclByb3BzPihcbiAgKHsgdGhlbWUsIG1heFRleHRBcmVhSGVpZ2h0LCBoYXNMZWZ0SWNvbiwgc2l6ZSB9KSA9PiB7XG4gICAgY29uc3QgcGFkZGluZ1RvcCA9IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSwgc2l6ZSk7XG4gICAgY29uc3QgcGFkZGluZ0JvdHRvbSA9IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSwgc2l6ZSk7XG4gICAgY29uc3QgaWNvblRleHRHYXAgPVxuICAgICAgc2l6ZSA9PT0gXCJzXCJcbiAgICAgICAgPyBgY2FsYygke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHN9IC0gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4eHN9KWBcbiAgICAgICAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnhzO1xuICAgIGNvbnN0IGJhc2VQYWRkaW5nSG9yaXpvbnRhbCA9IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lLCBzaXplKTtcbiAgICBjb25zdCBwYWRkaW5nUmlnaHQgPSBgY2FsYygke2Jhc2VQYWRkaW5nSG9yaXpvbnRhbH0gKyAke3RoZW1lLnZhcmlhYmxlcy5zaXplLmRpbWVuc2lvbi5pY29uLm19ICsgJHtpY29uVGV4dEdhcH0pYDtcbiAgICBjb25zdCBwYWRkaW5nTGVmdCA9IGhhc0xlZnRJY29uXG4gICAgICA/IGBjYWxjKCR7YmFzZVBhZGRpbmdIb3Jpem9udGFsfSArICR7dGhlbWUudmFyaWFibGVzLnNpemUuZGltZW5zaW9uLmljb25bc2l6ZV19ICsgJHtpY29uVGV4dEdhcH0pYFxuICAgICAgOiBiYXNlUGFkZGluZ0hvcml6b250YWw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheTogXCJncmlkXCIsXG4gICAgICB2ZXJ0aWNhbEFsaWduOiBcInRvcFwiLFxuICAgICAgYWxpZ25JdGVtczogXCJzdHJldGNoXCIsXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiaW5oZXJpdFwiLFxuICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLnZhcmlhYmxlcy5mb250RmFtaWx5LmxhdG8sXG4gICAgICBmb250U2l6ZTogdGhlbWUudmFyaWFibGVzLnNpemUuZm9udC5tLFxuICAgICAgbGluZUhlaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUubGluZUhlaWdodC54bCxcblxuICAgICAgLy8gVGV4dGFyZWEgZ3Jvd3MgZHVlIHRvIDo6YWZ0ZXIgZ3Jvd3NcbiAgICAgIC8vIGlmIHlvdSBuZWVkIHRvIG1hbmlwdWxhdGUgd2l0aCBzaXplIG9mIHRleHRhcmVhLCB5b3UgbmVlZCB0byBtYW5pcHVsYXRlIHdpdGggOjphZnRlciBhbHNvXG4gICAgICBcIiY6OmFmdGVyXCI6IHtcbiAgICAgICAgY29udGVudDogXCJhdHRyKGRhdGEtdmFsdWUpICcgJ1wiLCAvLyB0aGUgZW1wdHkgc3BhY2UgcHJldmVudHMgdGV4dGFyZWEganVtcCBvbiBncm93XG4gICAgICAgIGJveFNpemluZzogXCJib3JkZXItYm94XCIsXG4gICAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLnZhcmlhYmxlcy5mb250RmFtaWx5LmxhdG8sXG4gICAgICAgIGZvbnRTaXplOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5mb250Lm0sXG4gICAgICAgIGdyaWRBcmVhOiBcIjEgLyAxXCIsXG4gICAgICAgIHdoaXRlU3BhY2U6IFwicHJlLXdyYXBcIixcbiAgICAgICAgdmlzaWJpbGl0eTogXCJoaWRkZW5cIixcbiAgICAgICAgbWF4SGVpZ2h0OiBtYXhUZXh0QXJlYUhlaWdodCxcbiAgICAgIH0sXG5cbiAgICAgIHRleHRhcmVhOiB7XG4gICAgICAgIGFsbDogXCJ1bnNldFwiLFxuICAgICAgICByZXNpemU6IFwibm9uZVwiLFxuICAgICAgICBncmlkQXJlYTogXCIxIC8gMVwiLFxuICAgICAgICBjdXJzb3I6IFwidGV4dFwiLFxuICAgICAgICBjb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLnRleHQucHJpbWFyeS5kZWZhdWx0LFxuICAgICAgICAuLi5nZXRJbnB1dFRleHRQbGFjZWhvbGRlcih7IHRoZW1lIH0pLFxuICAgICAgfSxcbiAgICAgIFwidGV4dGFyZWE6OnBsYWNlaG9sZGVyXCI6IHtcbiAgICAgICAgd2hpdGVTcGFjZTogXCJub3dyYXBcIixcbiAgICAgICAgdGV4dE92ZXJmbG93OiBcImVsbGlwc2lzXCIsXG4gICAgICAgIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICAgICAgfSxcblxuICAgICAgXCImOjphZnRlciwgdGV4dGFyZWFcIjoge1xuICAgICAgICAvLyBtaW5XaWR0aCBjb21lcyB0b2dldGhlciB3aXRoIG92ZXJmbG93V3JhcCB0byBhY2hpZXZlIGJyZWFrLXdvcmRcbiAgICAgICAgLy8gaXQgc2hvdWxkIGJlIGFwcGxpZWQgZm9yIDo6YWZ0ZXIgYW5kIHRleHRhcmVhXG4gICAgICAgIG1pbldpZHRoOiBcIjBcIixcbiAgICAgICAgb3ZlcmZsb3dXcmFwOiBcImJyZWFrLXdvcmRcIixcbiAgICAgICAgcGFkZGluZzogYCR7cGFkZGluZ1RvcH0gJHtwYWRkaW5nUmlnaHR9ICR7cGFkZGluZ0JvdHRvbX0gJHtwYWRkaW5nTGVmdH1gLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgUHJvbXB0VGV4dEFyZWEgPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgZGF0YUUyZVRlc3RJZCxcbiAgICAgIGxhYmVsLFxuICAgICAgbmFtZSxcbiAgICAgIHZhbHVlLFxuICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICBtYXhUZXh0QXJlYUhlaWdodCA9IFwiMjAwcHhcIixcbiAgICAgIHNlbGVjdGVkTGlzdEl0ZW0sXG4gICAgICBpc0F1dG9jb21wbGV0ZUxpc3RPcGVuLFxuICAgICAgaGFzTGVmdEljb24sXG4gICAgICByb3dzID0gMSxcbiAgICAgIHNpemUsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9OiBQcm9tcHRUZXh0QXJlYVByb3BzLFxuICAgIHJlZjogUmVmT2JqZWN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+XG4gICkgPT4ge1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB0ZXh0QXJlYSA9IHJlZi5jdXJyZW50O1xuXG4gICAgICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSA6OmFmdGVyIHBzZXVkbyBlbGVtZW50IHNvIHRoYXQgdGhlIFRleHRBcmVhIHJlc2l6ZXMgYWNjb3JkaW5nbHkgYXMgdGhlIGdyaWQgc3RyZXRjaGVzLlxuICAgICAgKHRleHRBcmVhLnBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQpLmRhdGFzZXQudmFsdWUgPSB2YWx1ZTtcbiAgICB9LCBbdmFsdWUsIHJlZl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRUZXh0QXJlYUNvbnRhaW5lclxuICAgICAgICBtYXhUZXh0QXJlYUhlaWdodD17bWF4VGV4dEFyZWFIZWlnaHR9XG4gICAgICAgIGhhc0xlZnRJY29uPXtoYXNMZWZ0SWNvbn1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgID5cbiAgICAgICAgPFNjcmVlblJlYWRlclRleHQ+e2xhYmVsfTwvU2NyZWVuUmVhZGVyVGV4dD5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgZGF0YS1lMmUtdGVzdC1pZD17ZGF0YUUyZVRlc3RJZH1cbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIHJvd3M9e3Jvd3N9XG4gICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIlxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e1xuICAgICAgICAgICAgaXNBdXRvY29tcGxldGVMaXN0T3BlbiA/IGdldEF1dG9jb21wbGV0ZUxpc3RJZChuYW1lKSA6IFwiXCJcbiAgICAgICAgICB9XG4gICAgICAgICAgYXJpYS1hY3RpdmVkZXNjZW5kYW50PXtzZWxlY3RlZExpc3RJdGVtID8gc2VsZWN0ZWRMaXN0SXRlbS5pZCA6IFwiXCJ9XG4gICAgICAgICAgYXJpYS1leHBhbmRlZD17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgLz5cbiAgICAgIDwvU3R5bGVkVGV4dEFyZWFDb250YWluZXI+XG4gICAgKTtcbiAgfVxuKTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErQ2dDIn0= */");export const PromptTextArea=forwardRef(({dataE2eTestId,label,name,value,placeholder,maxTextAreaHeight="200px",selectedListItem,isAutocompleteListOpen,hasLeftIcon,rows=1,size,onChange,...rest},ref)=>(useEffect(()=>{ref.current.parentNode.dataset.value=value},[value,ref]),React.createElement(StyledTextAreaContainer,{maxTextAreaHeight:maxTextAreaHeight,hasLeftIcon:hasLeftIcon,size:size},React.createElement(ScreenReaderText,null,label),React.createElement("textarea",{...rest,"data-e2e-test-id":dataE2eTestId,ref:ref,name:name,value:value,placeholder:placeholder,onChange:onChange,rows:rows,role:"combobox","aria-autocomplete":"list","aria-controls":isAutocompleteListOpen?getAutocompleteListId(name):"","aria-activedescendant":selectedListItem?selectedListItem.id:"","aria-expanded":isAutocompleteListOpen}))));
|
|
1
|
+
import React,{forwardRef,useEffect}from"react";import styled from"@emotion/styled";import{getInputTextPlaceholder}from"../../shared/mixins/TextInput/getInputTextPlaceholder";import{ScreenReaderText}from"../Utilities/ScreenReaderText/ScreenReaderText";import{getAutocompleteListId}from"./AutocompleteList";export const getPaddingHorizontal=(theme,size)=>"s"===size?theme.variables.size.spacing.s:theme.variables.size.spacing.m;export const getPaddingVertical=(theme,size)=>"s"===size?theme.variables.size.spacing.xs:theme.variables.size.spacing.m;let StyledTextAreaContainer=styled("label",{target:"e1584yv0",label:"StyledTextAreaContainer"})(({theme,maxTextAreaHeight,hasLeftIcon,size})=>{let paddingTop=getPaddingVertical(theme,size),paddingBottom=getPaddingVertical(theme,size),iconTextGap="s"===size?`calc(${theme.variables.size.spacing.xs} - ${theme.variables.size.spacing.xxxs})`:theme.variables.size.spacing.xs,basePaddingHorizontal=getPaddingHorizontal(theme,size),paddingRight=`calc(${basePaddingHorizontal} + ${theme.variables.size.dimension.icon.m} + ${iconTextGap})`,paddingLeft=hasLeftIcon?`calc(${basePaddingHorizontal} + ${theme.variables.size.dimension.icon[size]} + ${iconTextGap})`:basePaddingHorizontal;return{display:"grid",verticalAlign:"top",alignItems:"stretch",width:"100%",borderRadius:"inherit",position:"relative",fontFamily:theme.variables.fontFamily.lato,fontSize:theme.variables.size.font.m,lineHeight:theme.variables.size.lineHeight.xl,"&::after":{content:"attr(data-value) ' '",boxSizing:"border-box",fontFamily:theme.variables.fontFamily.lato,fontSize:theme.variables.size.font.m,gridArea:"1 / 1",whiteSpace:"pre-wrap",visibility:"hidden",maxHeight:maxTextAreaHeight},textarea:{all:"unset",resize:"none",gridArea:"1 / 1",cursor:"text",color:theme.values.color.text.primary.default,...getInputTextPlaceholder({theme})},"textarea::placeholder":{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden"},"&::after, textarea":{minWidth:"0",overflowWrap:"break-word",padding:`${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`}}},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0VGV4dEFyZWEudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRUZXh0QXJlYS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWZPYmplY3QsIFRleHRhcmVhSFRNTEF0dHJpYnV0ZXMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgVGhlbWUgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJjc3N0eXBlXCI7XG5pbXBvcnQgdHlwZSB7IFByb21wdElucHV0U2l6ZXMgfSBmcm9tIFwic3JjL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRJbnB1dFRleHRQbGFjZWhvbGRlciB9IGZyb20gXCIuLi8uLi9zaGFyZWQvbWl4aW5zL1RleHRJbnB1dC9nZXRJbnB1dFRleHRQbGFjZWhvbGRlclwiO1xuaW1wb3J0IHsgU2NyZWVuUmVhZGVyVGV4dCB9IGZyb20gXCIuLi9VdGlsaXRpZXMvU2NyZWVuUmVhZGVyVGV4dC9TY3JlZW5SZWFkZXJUZXh0XCI7XG5pbXBvcnQgeyBnZXRBdXRvY29tcGxldGVMaXN0SWQgfSBmcm9tIFwiLi9BdXRvY29tcGxldGVMaXN0XCI7XG5pbXBvcnQgdHlwZSB7IEZsYXR0ZW5lZExpc3RJdGVtIH0gZnJvbSBcIi4vQ2F0ZWdvcnlMaXN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRQYWRkaW5nSG9yaXpvbnRhbCA9IChcbiAgdGhlbWU6IFRoZW1lLFxuICBzaXplOiBQcm9tcHRJbnB1dFNpemVzXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAoc2l6ZSA9PT0gXCJzXCIpIHJldHVybiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnM7XG4gIHJldHVybiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLm07XG59O1xuZXhwb3J0IGNvbnN0IGdldFBhZGRpbmdWZXJ0aWNhbCA9IChcbiAgdGhlbWU6IFRoZW1lLFxuICBzaXplOiBQcm9tcHRJbnB1dFNpemVzXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAoc2l6ZSA9PT0gXCJzXCIpIHJldHVybiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnhzO1xuICByZXR1cm4gdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5tO1xufTtcblxuZXhwb3J0IHR5cGUgUHJvbXB0VGV4dEFyZWFQcm9wcyA9XG4gIFRleHRhcmVhSFRNTEF0dHJpYnV0ZXM8SFRNTFRleHRBcmVhRWxlbWVudD4gJiB7XG4gICAgZGF0YUUyZVRlc3RJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIG1heFRleHRBcmVhSGVpZ2h0PzogUHJvcGVydHkuSGVpZ2h0O1xuICAgIHNlbGVjdGVkTGlzdEl0ZW0/OiBGbGF0dGVuZWRMaXN0SXRlbTtcbiAgICBpc0F1dG9jb21wbGV0ZUxpc3RPcGVuPzogYm9vbGVhbjtcbiAgICBoYXNMZWZ0SWNvbj86IGJvb2xlYW47XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzaXplOiBQcm9tcHRJbnB1dFNpemVzO1xuICB9O1xuXG50eXBlIFN0eWxlZFRleHRBcmVhQ29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBQcm9tcHRUZXh0QXJlYVByb3BzLFxuICBcIm1heFRleHRBcmVhSGVpZ2h0XCIgfCBcImhhc0xlZnRJY29uXCIgfCBcInNpemVcIlxuPjtcblxuLy8gVGV4dGFyZWEgYXV0byBncm93IGltcGxlbWVudGVkIGFjY29yZGluZyB0byBodHRwczovL2Nzcy10cmlja3MuY29tL3RoZS1jbGVhbmVzdC10cmljay1mb3ItYXV0b2dyb3dpbmctdGV4dGFyZWFzL1xuXG5jb25zdCBTdHlsZWRUZXh0QXJlYUNvbnRhaW5lciA9IHN0eWxlZC5sYWJlbDxTdHlsZWRUZXh0QXJlYUNvbnRhaW5lclByb3BzPihcbiAgKHsgdGhlbWUsIG1heFRleHRBcmVhSGVpZ2h0LCBoYXNMZWZ0SWNvbiwgc2l6ZSB9KSA9PiB7XG4gICAgY29uc3QgcGFkZGluZ1RvcCA9IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSwgc2l6ZSk7XG4gICAgY29uc3QgcGFkZGluZ0JvdHRvbSA9IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSwgc2l6ZSk7XG4gICAgY29uc3QgaWNvblRleHRHYXAgPVxuICAgICAgc2l6ZSA9PT0gXCJzXCJcbiAgICAgICAgPyBgY2FsYygke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHN9IC0gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4eHN9KWBcbiAgICAgICAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnhzO1xuICAgIGNvbnN0IGJhc2VQYWRkaW5nSG9yaXpvbnRhbCA9IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lLCBzaXplKTtcbiAgICBjb25zdCBwYWRkaW5nUmlnaHQgPSBgY2FsYygke2Jhc2VQYWRkaW5nSG9yaXpvbnRhbH0gKyAke3RoZW1lLnZhcmlhYmxlcy5zaXplLmRpbWVuc2lvbi5pY29uLm19ICsgJHtpY29uVGV4dEdhcH0pYDtcbiAgICBjb25zdCBwYWRkaW5nTGVmdCA9IGhhc0xlZnRJY29uXG4gICAgICA/IGBjYWxjKCR7YmFzZVBhZGRpbmdIb3Jpem9udGFsfSArICR7dGhlbWUudmFyaWFibGVzLnNpemUuZGltZW5zaW9uLmljb25bc2l6ZV19ICsgJHtpY29uVGV4dEdhcH0pYFxuICAgICAgOiBiYXNlUGFkZGluZ0hvcml6b250YWw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheTogXCJncmlkXCIsXG4gICAgICB2ZXJ0aWNhbEFsaWduOiBcInRvcFwiLFxuICAgICAgYWxpZ25JdGVtczogXCJzdHJldGNoXCIsXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiaW5oZXJpdFwiLFxuICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLnZhcmlhYmxlcy5mb250RmFtaWx5LmxhdG8sXG4gICAgICBmb250U2l6ZTogdGhlbWUudmFyaWFibGVzLnNpemUuZm9udC5tLFxuICAgICAgbGluZUhlaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUubGluZUhlaWdodC54bCxcblxuICAgICAgLy8gVGV4dGFyZWEgZ3Jvd3MgZHVlIHRvIDo6YWZ0ZXIgZ3Jvd3NcbiAgICAgIC8vIGlmIHlvdSBuZWVkIHRvIG1hbmlwdWxhdGUgd2l0aCBzaXplIG9mIHRleHRhcmVhLCB5b3UgbmVlZCB0byBtYW5pcHVsYXRlIHdpdGggOjphZnRlciBhbHNvXG4gICAgICBcIiY6OmFmdGVyXCI6IHtcbiAgICAgICAgY29udGVudDogXCJhdHRyKGRhdGEtdmFsdWUpICcgJ1wiLCAvLyB0aGUgZW1wdHkgc3BhY2UgcHJldmVudHMgdGV4dGFyZWEganVtcCBvbiBncm93XG4gICAgICAgIGJveFNpemluZzogXCJib3JkZXItYm94XCIsXG4gICAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLnZhcmlhYmxlcy5mb250RmFtaWx5LmxhdG8sXG4gICAgICAgIGZvbnRTaXplOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5mb250Lm0sXG4gICAgICAgIGdyaWRBcmVhOiBcIjEgLyAxXCIsXG4gICAgICAgIHdoaXRlU3BhY2U6IFwicHJlLXdyYXBcIixcbiAgICAgICAgdmlzaWJpbGl0eTogXCJoaWRkZW5cIixcbiAgICAgICAgbWF4SGVpZ2h0OiBtYXhUZXh0QXJlYUhlaWdodCxcbiAgICAgIH0sXG5cbiAgICAgIHRleHRhcmVhOiB7XG4gICAgICAgIGFsbDogXCJ1bnNldFwiLFxuICAgICAgICByZXNpemU6IFwibm9uZVwiLFxuICAgICAgICBncmlkQXJlYTogXCIxIC8gMVwiLFxuICAgICAgICBjdXJzb3I6IFwidGV4dFwiLFxuICAgICAgICBjb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLnRleHQucHJpbWFyeS5kZWZhdWx0LFxuICAgICAgICAuLi5nZXRJbnB1dFRleHRQbGFjZWhvbGRlcih7IHRoZW1lIH0pLFxuICAgICAgfSxcbiAgICAgIFwidGV4dGFyZWE6OnBsYWNlaG9sZGVyXCI6IHtcbiAgICAgICAgd2hpdGVTcGFjZTogXCJub3dyYXBcIixcbiAgICAgICAgdGV4dE92ZXJmbG93OiBcImVsbGlwc2lzXCIsXG4gICAgICAgIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICAgICAgfSxcblxuICAgICAgXCImOjphZnRlciwgdGV4dGFyZWFcIjoge1xuICAgICAgICAvLyBtaW5XaWR0aCBjb21lcyB0b2dldGhlciB3aXRoIG92ZXJmbG93V3JhcCB0byBhY2hpZXZlIGJyZWFrLXdvcmRcbiAgICAgICAgLy8gaXQgc2hvdWxkIGJlIGFwcGxpZWQgZm9yIDo6YWZ0ZXIgYW5kIHRleHRhcmVhXG4gICAgICAgIG1pbldpZHRoOiBcIjBcIixcbiAgICAgICAgb3ZlcmZsb3dXcmFwOiBcImJyZWFrLXdvcmRcIixcbiAgICAgICAgcGFkZGluZzogYCR7cGFkZGluZ1RvcH0gJHtwYWRkaW5nUmlnaHR9ICR7cGFkZGluZ0JvdHRvbX0gJHtwYWRkaW5nTGVmdH1gLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgUHJvbXB0VGV4dEFyZWEgPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgZGF0YUUyZVRlc3RJZCxcbiAgICAgIGxhYmVsLFxuICAgICAgbmFtZSxcbiAgICAgIHZhbHVlLFxuICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICBtYXhUZXh0QXJlYUhlaWdodCA9IFwiMjAwcHhcIixcbiAgICAgIHNlbGVjdGVkTGlzdEl0ZW0sXG4gICAgICBpc0F1dG9jb21wbGV0ZUxpc3RPcGVuLFxuICAgICAgaGFzTGVmdEljb24sXG4gICAgICByb3dzID0gMSxcbiAgICAgIHNpemUsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIHJvbGUsXG4gICAgICAuLi5yZXN0XG4gICAgfTogUHJvbXB0VGV4dEFyZWFQcm9wcyxcbiAgICByZWY6IFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50PlxuICApID0+IHtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdGV4dEFyZWEgPSByZWYuY3VycmVudDtcblxuICAgICAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgOjphZnRlciBwc2V1ZG8gZWxlbWVudCBzbyB0aGF0IHRoZSBUZXh0QXJlYSByZXNpemVzIGFjY29yZGluZ2x5IGFzIHRoZSBncmlkIHN0cmV0Y2hlcy5cbiAgICAgICh0ZXh0QXJlYS5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50KS5kYXRhc2V0LnZhbHVlID0gdmFsdWU7XG4gICAgfSwgW3ZhbHVlLCByZWZdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkVGV4dEFyZWFDb250YWluZXJcbiAgICAgICAgbWF4VGV4dEFyZWFIZWlnaHQ9e21heFRleHRBcmVhSGVpZ2h0fVxuICAgICAgICBoYXNMZWZ0SWNvbj17aGFzTGVmdEljb259XG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICA+XG4gICAgICAgIDxTY3JlZW5SZWFkZXJUZXh0PntsYWJlbH08L1NjcmVlblJlYWRlclRleHQ+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICByb3dzPXtyb3dzfVxuICAgICAgICAgIHJvbGU9e3JvbGUgPz8gXCJjb21ib2JveFwifVxuICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwibGlzdFwiXG4gICAgICAgICAgYXJpYS1jb250cm9scz17XG4gICAgICAgICAgICBpc0F1dG9jb21wbGV0ZUxpc3RPcGVuID8gZ2V0QXV0b2NvbXBsZXRlTGlzdElkKG5hbWUpIDogXCJcIlxuICAgICAgICAgIH1cbiAgICAgICAgICBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQ9e3NlbGVjdGVkTGlzdEl0ZW0gPyBzZWxlY3RlZExpc3RJdGVtLmlkIDogXCJcIn1cbiAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtpc0F1dG9jb21wbGV0ZUxpc3RPcGVufVxuICAgICAgICAvPlxuICAgICAgPC9TdHlsZWRUZXh0QXJlYUNvbnRhaW5lcj5cbiAgICApO1xuICB9XG4pO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDZ0MifQ== */");export const PromptTextArea=forwardRef(({dataE2eTestId,label,name,value,placeholder,maxTextAreaHeight="200px",selectedListItem,isAutocompleteListOpen,hasLeftIcon,rows=1,size,onChange,role,...rest},ref)=>(useEffect(()=>{ref.current.parentNode.dataset.value=value},[value,ref]),React.createElement(StyledTextAreaContainer,{maxTextAreaHeight:maxTextAreaHeight,hasLeftIcon:hasLeftIcon,size:size},React.createElement(ScreenReaderText,null,label),React.createElement("textarea",{...rest,"data-e2e-test-id":dataE2eTestId,ref:ref,name:name,value:value,placeholder:placeholder,onChange:onChange,rows:rows,role:role??"combobox","aria-autocomplete":"list","aria-controls":isAutocompleteListOpen?getAutocompleteListId(name):"","aria-activedescendant":selectedListItem?selectedListItem.id:"","aria-expanded":isAutocompleteListOpen}))));
|
package/build/esm/index.d.ts
CHANGED
|
@@ -110,3 +110,4 @@ export * from "./components/Content/ContentTableModal/ContentTableModal";
|
|
|
110
110
|
export * from "./components/Content/DosageButton";
|
|
111
111
|
export * from "./components/Content/ReferenceButton";
|
|
112
112
|
export * from "./components/AIButton/AIButton";
|
|
113
|
+
export * from "./components/Internal/LayoutManager";
|
package/build/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ambossVisualConfiguration}from"./web-tokens/visualConfig";export const{dark,light}=ambossVisualConfiguration;export{ThemeProvider,CacheProvider}from"@emotion/react";export{default as createCache}from"@emotion/cache";export*from"./components/AccessCardItem/AccessCardItem";export*from"./components/Avatar/Avatar";export*from"./components/AvatarGroup/AvatarGroup";export*from"./components/Badge/Badge";export*from"./components/BinaryFeedback/BinaryFeedback";export*from"./components/Box/Box";export*from"./components/BulkActionsToolbar/BulkActionsToolbar";export*from"./components/Button/Button";export*from"./components/Callout/Callout";export*from"./components/Card/Card";export*from"./components/Card/CardBox";export*from"./components/CatalogCard/CatalogCard";export*from"./components/CheckboxCard/CheckboxCard";export*from"./components/Collapsible/Collapsible";export*from"./components/ColorIndicator/ColorIndicator";export*from"./components/ColorPicker/ColorPicker";export*from"./components/Column/Columns";export*from"./components/Container";export*from"./components/CountButton/CountButton";export*from"./components/DataTable";export*from"./components/Divider/Divider";export*from"./components/DropdownMenu/DropdownMenu";export*from"./components/EntityList";export*from"./components/EntityTree";export*from"./components/Composite/FilterDialog/FilterDialog";export*from"./components/Form/Checkbox/Checkbox";export*from"./components/Form/Combobox/Combobox";export*from"./components/Form/DateInput/DateInput";export*from"./components/Form/DatePicker";export*from"./components/Form/FormFieldGroup/FormFieldGroup";export*from"./components/Form/Input";export*from"./components/Form/MaskedInput/MaskedInput";export*from"./components/Form/PasswordInput";export*from"./components/Form/Radio/Radio";export*from"./components/Form/RadioButton/RadioButton";export*from"./components/Form/RangeInput/RangeInput";export*from"./components/Form/SearchInput/SearchInput";export*from"./components/Form/SegmentedControl/SegmentedControl";export*from"./components/Form/Select";export*from"./components/Form/ToolbarToggle/ToolbarToggle";export*from"./components/Form/Textarea/Textarea";export*from"./components/Form/Toggle/Toggle";export*from"./components/Form/ToggleButton/ToggleButton";export*from"./components/Grid/Grid";export*from"./components/Icon/Icon";export*from"./components/IconTile/IconTile";export*from"./components/Image/Image";export*from"./components/Inline/Inline";export*from"./components/InteractiveBox/InteractiveBox";export*from"./components/Lightbox/Lightbox";export*from"./components/Link/Link";export*from"./components/LoadingSpinner/LoadingSpinner";export*from"./components/Logo/Logo";export*from"./components/MediaItem";export*from"./components/MediaViewerBar/MediaViewerBar";export*from"./components/MediaViewerCarousel/MediaViewerCarousel";export*from"./components/NavBar";export*from"./components/Notification/Notification";export*from"./components/Pagination/Pagination";export*from"./components/Patterns/ButtonGroup/ButtonGroup";export*from"./components/Patterns/Modal/Modal";export*from"./components/PictogramButton/PictogramButton";export*from"./components/Popover/Popover";export*from"./components/ProgressBar/ProgressBar";export*from"./components/PromptButton/PromptButton";export*from"./components/PromptInput/PromptInput";export*from"./components/SplashCard/SplashCard";export*from"./components/SplashCardMedia/SplashCardMedia";export*from"./components/QBankRichText/QBankRichText";export*from"./components/RadioCard/RadioCard";export*from"./components/RoundButton/RoundButton";export*from"./components/SearchResult/SearchResult";export*from"./components/SegmentedProgressBar/SegmentedProgressBar";export*from"./components/Sheet/Sheet";export*from"./components/Stack/Stack";export*from"./components/SubThemeProvider/SubThemeProvider";export*from"./components/Tabs/Tabs";export*from"./components/Tag/Tag";export*from"./components/TagGroup/TagGroup";export*from"./components/Toast";export*from"./components/Toggletip/Toggletip";export*from"./components/Tooltip/Tooltip";export*from"./components/Tutorialtip/Tutorialtip";export*from"./components/Typography/Header";export*from"./components/Typography/StyledText/StyledText";export*from"./components/Typography/Text";export*from"./components/Typography/TextClamped/TextClamped";export*from"./components/UserHighlightTooltip/UserHighlightTooltip";export*from"./components/Utilities/AnimatedBorder/useAnimatedBorder";export*from"./components/Utilities/ContainerQuery/ContainerQuery";export*from"./components/Utilities/Expandable/Expandable";export*from"./components/Utilities/ScreenReaderText/ScreenReaderText";export*from"./components/Patterns/EmptyState/EmptyState";export*from"./components/Content/ContentBox/ContentBox";export*from"./components/Content/ContentCheckbox/ContentCheckbox";export*from"./components/Content/ContentFontResizer";export*from"./components/Content/ContentHeading/ContentHeading";export*from"./components/Content/ContentLink/ContentLink";export*from"./components/Content/ContentPictogramButton/ContentPictogramButton";export*from"./components/Content/ContentText/ContentText";export*from"./components/Content/ContentList";export*from"./components/Content/ContentTable";export*from"./components/Content/ContentTableModal/ContentTableModal";export*from"./components/Content/DosageButton";export*from"./components/Content/ReferenceButton";export*from"./components/AIButton/AIButton";
|
|
1
|
+
import{ambossVisualConfiguration}from"./web-tokens/visualConfig";export const{dark,light}=ambossVisualConfiguration;export{ThemeProvider,CacheProvider}from"@emotion/react";export{default as createCache}from"@emotion/cache";export*from"./components/AccessCardItem/AccessCardItem";export*from"./components/Avatar/Avatar";export*from"./components/AvatarGroup/AvatarGroup";export*from"./components/Badge/Badge";export*from"./components/BinaryFeedback/BinaryFeedback";export*from"./components/Box/Box";export*from"./components/BulkActionsToolbar/BulkActionsToolbar";export*from"./components/Button/Button";export*from"./components/Callout/Callout";export*from"./components/Card/Card";export*from"./components/Card/CardBox";export*from"./components/CatalogCard/CatalogCard";export*from"./components/CheckboxCard/CheckboxCard";export*from"./components/Collapsible/Collapsible";export*from"./components/ColorIndicator/ColorIndicator";export*from"./components/ColorPicker/ColorPicker";export*from"./components/Column/Columns";export*from"./components/Container";export*from"./components/CountButton/CountButton";export*from"./components/DataTable";export*from"./components/Divider/Divider";export*from"./components/DropdownMenu/DropdownMenu";export*from"./components/EntityList";export*from"./components/EntityTree";export*from"./components/Composite/FilterDialog/FilterDialog";export*from"./components/Form/Checkbox/Checkbox";export*from"./components/Form/Combobox/Combobox";export*from"./components/Form/DateInput/DateInput";export*from"./components/Form/DatePicker";export*from"./components/Form/FormFieldGroup/FormFieldGroup";export*from"./components/Form/Input";export*from"./components/Form/MaskedInput/MaskedInput";export*from"./components/Form/PasswordInput";export*from"./components/Form/Radio/Radio";export*from"./components/Form/RadioButton/RadioButton";export*from"./components/Form/RangeInput/RangeInput";export*from"./components/Form/SearchInput/SearchInput";export*from"./components/Form/SegmentedControl/SegmentedControl";export*from"./components/Form/Select";export*from"./components/Form/ToolbarToggle/ToolbarToggle";export*from"./components/Form/Textarea/Textarea";export*from"./components/Form/Toggle/Toggle";export*from"./components/Form/ToggleButton/ToggleButton";export*from"./components/Grid/Grid";export*from"./components/Icon/Icon";export*from"./components/IconTile/IconTile";export*from"./components/Image/Image";export*from"./components/Inline/Inline";export*from"./components/InteractiveBox/InteractiveBox";export*from"./components/Lightbox/Lightbox";export*from"./components/Link/Link";export*from"./components/LoadingSpinner/LoadingSpinner";export*from"./components/Logo/Logo";export*from"./components/MediaItem";export*from"./components/MediaViewerBar/MediaViewerBar";export*from"./components/MediaViewerCarousel/MediaViewerCarousel";export*from"./components/NavBar";export*from"./components/Notification/Notification";export*from"./components/Pagination/Pagination";export*from"./components/Patterns/ButtonGroup/ButtonGroup";export*from"./components/Patterns/Modal/Modal";export*from"./components/PictogramButton/PictogramButton";export*from"./components/Popover/Popover";export*from"./components/ProgressBar/ProgressBar";export*from"./components/PromptButton/PromptButton";export*from"./components/PromptInput/PromptInput";export*from"./components/SplashCard/SplashCard";export*from"./components/SplashCardMedia/SplashCardMedia";export*from"./components/QBankRichText/QBankRichText";export*from"./components/RadioCard/RadioCard";export*from"./components/RoundButton/RoundButton";export*from"./components/SearchResult/SearchResult";export*from"./components/SegmentedProgressBar/SegmentedProgressBar";export*from"./components/Sheet/Sheet";export*from"./components/Stack/Stack";export*from"./components/SubThemeProvider/SubThemeProvider";export*from"./components/Tabs/Tabs";export*from"./components/Tag/Tag";export*from"./components/TagGroup/TagGroup";export*from"./components/Toast";export*from"./components/Toggletip/Toggletip";export*from"./components/Tooltip/Tooltip";export*from"./components/Tutorialtip/Tutorialtip";export*from"./components/Typography/Header";export*from"./components/Typography/StyledText/StyledText";export*from"./components/Typography/Text";export*from"./components/Typography/TextClamped/TextClamped";export*from"./components/UserHighlightTooltip/UserHighlightTooltip";export*from"./components/Utilities/AnimatedBorder/useAnimatedBorder";export*from"./components/Utilities/ContainerQuery/ContainerQuery";export*from"./components/Utilities/Expandable/Expandable";export*from"./components/Utilities/ScreenReaderText/ScreenReaderText";export*from"./components/Patterns/EmptyState/EmptyState";export*from"./components/Content/ContentBox/ContentBox";export*from"./components/Content/ContentCheckbox/ContentCheckbox";export*from"./components/Content/ContentFontResizer";export*from"./components/Content/ContentHeading/ContentHeading";export*from"./components/Content/ContentLink/ContentLink";export*from"./components/Content/ContentPictogramButton/ContentPictogramButton";export*from"./components/Content/ContentText/ContentText";export*from"./components/Content/ContentList";export*from"./components/Content/ContentTable";export*from"./components/Content/ContentTableModal/ContentTableModal";export*from"./components/Content/DosageButton";export*from"./components/Content/ReferenceButton";export*from"./components/AIButton/AIButton";export*from"./components/Internal/LayoutManager";
|