jsx-slack
Version:
Build JSON object for Slack Block Kit surfaces from JSX
2 lines (1 loc) • 2.09 kB
JavaScript
import{JSXSlack as d}from"../../jsx.mjs";import{createComponent as k,cleanMeta as M,createElementInternal as _}from"../../jsx-internals.mjs";import{plainText as a}from"../composition/utils.mjs";import{Select as g}from"../elements/Select.mjs";import{Textarea as h}from"../input/Textarea.mjs";import{availableActionTypes as x}from"../layout/Actions.mjs";import{Divider as C}from"../layout/Divider.mjs";import{Header as S}from"../layout/Header.mjs";import{Image as I}from"../layout/Image.mjs";import{Input as f,knownInputs as T}from"../layout/Input.mjs";import{availableSectionAccessoryTypes as w,Section as O}from"../layout/Section.mjs";import{Video as A}from"../layout/Video.mjs";import{generateBlocksContainer as V,generateActionsValidator as j,generateSectionValidator as B}from"./utils.mjs";const D=V({name:"Modal",availableBlockTypes:{actions:j([...x].filter(t=>t!=="workflow_button")),context:!0,divider:!0,header:!0,image:!0,input:!0,section:B([...w].filter(t=>t!=="workflow_button")),video:!0},aliases:{header:S,hr:C,img:I,input:f,section:O,select:g,textarea:h,video:A},typesToCheckMissingLabel:T}),E=a("Submit"),J=k("Modal",t=>{let l=!1,r,e;const u=d.Children.toArray(t.children).reduce((n,o)=>{if(d.isValidElement(o)){const{type:p,props:i}=o.$$jsxslack;if(p===f||p==="input"){if(i.type==="hidden")return e=e||{},e[i.name]=i.value,n;if(i.type==="submit")return r=a(i.value),n;l=!0}}return typeof o=="object"?(o.type==="input"&&(l=!0),[...n,o]):n},[]);!r&&l&&(r=E);const b=typeof t.privateMetadata=="string"?t.privateMetadata:typeof t.privateMetadata=="function"?t.privateMetadata(e):e&&JSON.stringify(e),s=t.type||"modal",v={title:a(t.title||""),submit:t.submit?a(t.submit):r,close:t.close?a(t.close):void 0,clear_on_close:t.clearOnClose!==void 0?!!t.clearOnClose:void 0,notify_on_close:t.notifyOnClose!==void 0?!!t.notifyOnClose:void 0,external_id:t.externalId},y={submit_disabled:t.submit!==void 0?!t.submit:void 0},c={callback_id:t.callbackId,private_metadata:b},m=M(_(D,{children:u}));return s==="modal"?{type:s,...c,...v,blocks:m}:{type:s,...c,...y,blocks:m}});export{J as Modal};