@smwb/ui-solid 0.2.2 → 0.3.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/dist/components/dataDisplay/carousel/carousel.js +7 -7
- package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatAttachmentImage.js +17 -17
- package/dist/components/dataDisplay/chat/chatAttachmentImage.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatShell.js +16 -16
- package/dist/components/dataDisplay/chat/chatShell.js.map +1 -1
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +25 -25
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +15 -15
- package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
- package/dist/components/feedBack/modal/modal.js +29 -29
- package/dist/components/feedBack/modal/modal.js.map +1 -1
- package/dist/components/inputs/datePicker/datePicker.js +43 -43
- package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js +46 -46
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/components/inputs/selectField/dropdownMenu.js +30 -30
- package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/components/inputs/slider/slider.js +48 -48
- package/dist/components/inputs/slider/slider.js.map +1 -1
- package/dist/components/inputs/timePicker/timePicker.js +31 -31
- package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/components/layout/sheet/sheet.js +29 -29
- package/dist/components/layout/sheet/sheet.js.map +1 -1
- package/dist/headless/components/dataDisplay/carousel/carousel.js +20 -20
- package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatAttachmentImage.js +17 -17
- package/dist/headless/components/dataDisplay/chat/chatAttachmentImage.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatShell.js +16 -16
- package/dist/headless/components/dataDisplay/chat/chatShell.js.map +1 -1
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +25 -25
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +15 -15
- package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
- package/dist/headless/components/feedBack/modal/modal.js +25 -25
- package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePicker.js +43 -43
- package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +46 -46
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/headless/components/inputs/selectField/dropdownMenu.js +30 -30
- package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/headless/components/inputs/slider/slider.js +90 -90
- package/dist/headless/components/inputs/slider/slider.js.map +1 -1
- package/dist/headless/components/inputs/timePicker/timePicker.js +31 -31
- package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/headless/components/layout/sheet/sheet.js +29 -29
- package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
- package/dist/ssr.ssr-spec.d.ts +1 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expansionPanel.js","sources":["../../../../src/components/dataDisplay/expansionPanel/expansionPanel.tsx"],"sourcesContent":["import { type JSX, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Button } from \"../../inputs/button\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type ExpansionMode = \"tile\" | \"row\" | \"fullscreen\";\n\nexport interface ExpansionPanelLabels {\n expandRow?: string;\n collapseRow?: string;\n expandFullscreen?: string;\n closeFullscreen?: string;\n placeholder?: string;\n placeholderClose?: string;\n}\n\nexport interface ExpansionPanelRenderContext {\n mode: ExpansionMode;\n isFullscreen: boolean;\n isFullRow: boolean;\n}\n\nexport interface ExpansionPanelControlsContext extends ExpansionPanelRenderContext {\n setMode: (next: ExpansionMode | ((current: ExpansionMode) => ExpansionMode)) => void;\n toggleRow: () => void;\n openFullscreen: () => void;\n closeFullscreen: () => void;\n labels: Required<ExpansionPanelLabels>;\n}\n\ntype ExpansionPanelChildren = JSX.Element | ((ctx: ExpansionPanelRenderContext) => JSX.Element);\ntype ExpansionPanelControls = JSX.Element | ((ctx: ExpansionPanelControlsContext) => JSX.Element);\n\nexport interface ExpansionPanelProps {\n class?: string;\n header?: JSX.Element;\n mode?: ExpansionMode;\n defaultMode?: ExpansionMode;\n onModeChange?: (mode: ExpansionMode) => void;\n disableExpand?: boolean;\n noControls?: boolean;\n renderControls?: ExpansionPanelControls;\n closeOnOutsideClick?: boolean;\n closeOnEsc?: boolean;\n labels?: ExpansionPanelLabels;\n children?: ExpansionPanelChildren;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst DEFAULT_LABELS: Required<ExpansionPanelLabels> = {\n expandRow: \"Expand to full row\",\n collapseRow: \"Collapse to grid\",\n expandFullscreen: \"Expand to fullscreen\",\n closeFullscreen: \"Close fullscreen\",\n placeholder: \"Panel is open in fullscreen\",\n placeholderClose: \"Close\",\n};\n\nexport function ExpansionPanel(props: ExpansionPanelProps): JSX.Element {\n const merged = mergeProps(\n { defaultMode: \"tile\" as ExpansionMode, disableExpand: false, noControls: false, closeOnOutsideClick: true, closeOnEsc: true },\n props\n );\n const [local] = splitProps(merged, [\n \"class\",\n \"header\",\n \"mode\",\n \"defaultMode\",\n \"onModeChange\",\n \"disableExpand\",\n \"noControls\",\n \"renderControls\",\n \"closeOnOutsideClick\",\n \"closeOnEsc\",\n \"labels\",\n \"children\",\n \"ref\",\n ]);\n\n const [mode, setMode] = createControllableState<ExpansionMode>({\n value: () => local.mode,\n defaultValue: local.defaultMode,\n onChange: (next) => local.onModeChange?.(next),\n });\n\n const labels = (): Required<ExpansionPanelLabels> => ({ ...DEFAULT_LABELS, ...local.labels });\n const effectiveMode = (): ExpansionMode => (local.disableExpand ? \"tile\" : mode());\n const isFullRow = (): boolean => effectiveMode() === \"row\";\n const isFullscreen = (): boolean => effectiveMode() === \"fullscreen\";\n\n const toggleRow = (): void => setMode((current) => (current === \"row\" ? \"tile\" : \"row\"));\n const openFullscreen = (): void => setMode(\"fullscreen\");\n const closeFullscreen = (): void => setMode(\"tile\");\n\n const controlsContext = (overlay: boolean): ExpansionPanelControlsContext => ({\n mode: effectiveMode(),\n isFullscreen: overlay,\n isFullRow: overlay ? false : isFullRow(),\n setMode,\n toggleRow,\n openFullscreen,\n closeFullscreen,\n labels: labels(),\n });\n\n const renderChildren = (overlay: boolean): JSX.Element => {\n const ctx: ExpansionPanelRenderContext = { mode: effectiveMode(), isFullscreen: overlay, isFullRow: overlay ? false : isFullRow() };\n return typeof local.children === \"function\" ? local.children(ctx) : local.children;\n };\n\n const defaultControls = (overlay: boolean): JSX.Element => {\n if (overlay) {\n return (\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-label={labels().closeFullscreen}\n title={labels().closeFullscreen}\n onClick={closeFullscreen}\n data-testid=\"expansion-panel-close\"\n icon={<Icon name=\"close\" size={18} />}\n />\n );\n }\n return (\n <>\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-pressed={isFullRow()}\n aria-label={isFullRow() ? labels().collapseRow : labels().expandRow}\n title={isFullRow() ? labels().collapseRow : labels().expandRow}\n onClick={toggleRow}\n data-testid=\"expansion-panel-row\"\n icon={<Icon name={isFullRow() ? \"grid_view\" : \"table_rows\"} size={18} />}\n />\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-label={labels().expandFullscreen}\n title={labels().expandFullscreen}\n onClick={openFullscreen}\n data-testid=\"expansion-panel-fullscreen\"\n icon={<Icon name=\"open_in_full\" size={18} />}\n />\n </>\n );\n };\n\n const controlBar = (overlay: boolean): JSX.Element => {\n if (local.disableExpand || local.noControls) return null;\n const content = local.renderControls\n ? typeof local.renderControls === \"function\"\n ? local.renderControls(controlsContext(overlay))\n : local.renderControls\n : defaultControls(overlay);\n return <Show when={content}>{(c) => <div class=\"smwb-expansion-panel__controls\">{c() as JSX.Element}</div>}</Show>;\n };\n\n // Lock body scroll while fullscreen.\n createEffect(() => {\n if (!isFullscreen()) return;\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n onCleanup(() => {\n document.body.style.overflow = prev;\n });\n });\n\n // Escape closes fullscreen.\n createEffect(() => {\n if (!isFullscreen() || !local.closeOnEsc) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") setMode(\"tile\");\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const card = (): JSX.Element => (\n <div\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-expansion-panel\", { \"smwb-expansion-panel_row\": isFullRow() }, local.class)}\n data-testid=\"expansion-panel\"\n >\n <div class=\"smwb-expansion-panel__head\">\n <div class=\"smwb-expansion-panel__header\">{local.header}</div>\n {controlBar(false)}\n </div>\n <div class=\"smwb-expansion-panel__body\">{renderChildren(false)}</div>\n </div>\n );\n\n return (\n <Show when={isFullscreen()} fallback={card()}>\n <>\n <div class=\"smwb-expansion-panel__placeholder\" data-testid=\"expansion-panel-placeholder\">\n <span>{labels().placeholder}</span>\n <Button type=\"button\" variant=\"outlined\" size=\"small\" label={labels().placeholderClose} onClick={() => setMode(\"tile\")} />\n </div>\n <Portal mount={document.body}>\n <div\n class=\"smwb-expansion-panel__overlay smwb-dark\"\n role=\"dialog\"\n aria-modal=\"true\"\n data-testid=\"expansion-panel-overlay\"\n onClick={\n local.closeOnOutsideClick\n ? (event) => {\n if (event.target === event.currentTarget) setMode(\"tile\");\n }\n : undefined\n }\n >\n <div class=\"smwb-expansion-panel__dialog\">\n <div class=\"smwb-expansion-panel__head\">\n <div class=\"smwb-expansion-panel__header\">{local.header}</div>\n {controlBar(true)}\n </div>\n <div class=\"smwb-expansion-panel__body smwb-expansion-panel__body_fullscreen\">{renderChildren(true)}</div>\n </div>\n </div>\n </Portal>\n </>\n </Show>\n );\n}\n\nexport default ExpansionPanel;\n"],"names":["DEFAULT_LABELS","expandRow","collapseRow","expandFullscreen","closeFullscreen","placeholder","placeholderClose","ExpansionPanel","props","merged","mergeProps","defaultMode","disableExpand","noControls","closeOnOutsideClick","closeOnEsc","local","splitProps","mode","setMode","createControllableState","value","defaultValue","onChange","next","onModeChange","labels","effectiveMode","isFullRow","isFullscreen","toggleRow","current","openFullscreen","controlsContext","overlay","renderChildren","ctx","children","defaultControls","_$createComponent","Button","type","variant","size","title","onClick","icon","Icon","name","_$memo","controlBar","content","renderControls","Show","when","c","_el$","_tmpl$","_$insert","createEffect","prev","document","body","style","overflow","onCleanup","onKeyDown","event","key","addEventListener","removeEventListener","card","_el$2","_tmpl$2","_el$3","firstChild","_el$4","_el$5","nextSibling","_ref$","mergeRefs","ref","_$use","header","_$effect","_$className","cn","class","fallback","_el$6","_tmpl$3","_el$7","label","Portal","mount","_el$8","_tmpl$4","_el$9","_el$0","_el$1","_el$10","_$addEventListener","target","currentTarget","undefined","_$delegateEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"expansionPanel.js","sources":["../../../../src/components/dataDisplay/expansionPanel/expansionPanel.tsx"],"sourcesContent":["import { type JSX, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Button } from \"../../inputs/button\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type ExpansionMode = \"tile\" | \"row\" | \"fullscreen\";\n\nexport interface ExpansionPanelLabels {\n expandRow?: string;\n collapseRow?: string;\n expandFullscreen?: string;\n closeFullscreen?: string;\n placeholder?: string;\n placeholderClose?: string;\n}\n\nexport interface ExpansionPanelRenderContext {\n mode: ExpansionMode;\n isFullscreen: boolean;\n isFullRow: boolean;\n}\n\nexport interface ExpansionPanelControlsContext extends ExpansionPanelRenderContext {\n setMode: (next: ExpansionMode | ((current: ExpansionMode) => ExpansionMode)) => void;\n toggleRow: () => void;\n openFullscreen: () => void;\n closeFullscreen: () => void;\n labels: Required<ExpansionPanelLabels>;\n}\n\ntype ExpansionPanelChildren = JSX.Element | ((ctx: ExpansionPanelRenderContext) => JSX.Element);\ntype ExpansionPanelControls = JSX.Element | ((ctx: ExpansionPanelControlsContext) => JSX.Element);\n\nexport interface ExpansionPanelProps {\n class?: string;\n header?: JSX.Element;\n mode?: ExpansionMode;\n defaultMode?: ExpansionMode;\n onModeChange?: (mode: ExpansionMode) => void;\n disableExpand?: boolean;\n noControls?: boolean;\n renderControls?: ExpansionPanelControls;\n closeOnOutsideClick?: boolean;\n closeOnEsc?: boolean;\n labels?: ExpansionPanelLabels;\n children?: ExpansionPanelChildren;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst DEFAULT_LABELS: Required<ExpansionPanelLabels> = {\n expandRow: \"Expand to full row\",\n collapseRow: \"Collapse to grid\",\n expandFullscreen: \"Expand to fullscreen\",\n closeFullscreen: \"Close fullscreen\",\n placeholder: \"Panel is open in fullscreen\",\n placeholderClose: \"Close\",\n};\n\nexport function ExpansionPanel(props: ExpansionPanelProps): JSX.Element {\n const merged = mergeProps(\n { defaultMode: \"tile\" as ExpansionMode, disableExpand: false, noControls: false, closeOnOutsideClick: true, closeOnEsc: true },\n props\n );\n const [local] = splitProps(merged, [\n \"class\",\n \"header\",\n \"mode\",\n \"defaultMode\",\n \"onModeChange\",\n \"disableExpand\",\n \"noControls\",\n \"renderControls\",\n \"closeOnOutsideClick\",\n \"closeOnEsc\",\n \"labels\",\n \"children\",\n \"ref\",\n ]);\n\n const [mode, setMode] = createControllableState<ExpansionMode>({\n value: () => local.mode,\n defaultValue: local.defaultMode,\n onChange: (next) => local.onModeChange?.(next),\n });\n\n const labels = (): Required<ExpansionPanelLabels> => ({ ...DEFAULT_LABELS, ...local.labels });\n const effectiveMode = (): ExpansionMode => (local.disableExpand ? \"tile\" : mode());\n const isFullRow = (): boolean => effectiveMode() === \"row\";\n const isFullscreen = (): boolean => effectiveMode() === \"fullscreen\";\n\n const toggleRow = (): void => setMode((current) => (current === \"row\" ? \"tile\" : \"row\"));\n const openFullscreen = (): void => setMode(\"fullscreen\");\n const closeFullscreen = (): void => setMode(\"tile\");\n\n const controlsContext = (overlay: boolean): ExpansionPanelControlsContext => ({\n mode: effectiveMode(),\n isFullscreen: overlay,\n isFullRow: overlay ? false : isFullRow(),\n setMode,\n toggleRow,\n openFullscreen,\n closeFullscreen,\n labels: labels(),\n });\n\n const renderChildren = (overlay: boolean): JSX.Element => {\n const ctx: ExpansionPanelRenderContext = { mode: effectiveMode(), isFullscreen: overlay, isFullRow: overlay ? false : isFullRow() };\n return typeof local.children === \"function\" ? local.children(ctx) : local.children;\n };\n\n const defaultControls = (overlay: boolean): JSX.Element => {\n if (overlay) {\n return (\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-label={labels().closeFullscreen}\n title={labels().closeFullscreen}\n onClick={closeFullscreen}\n data-testid=\"expansion-panel-close\"\n icon={<Icon name=\"close\" size={18} />}\n />\n );\n }\n return (\n <>\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-pressed={isFullRow()}\n aria-label={isFullRow() ? labels().collapseRow : labels().expandRow}\n title={isFullRow() ? labels().collapseRow : labels().expandRow}\n onClick={toggleRow}\n data-testid=\"expansion-panel-row\"\n icon={<Icon name={isFullRow() ? \"grid_view\" : \"table_rows\"} size={18} />}\n />\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-label={labels().expandFullscreen}\n title={labels().expandFullscreen}\n onClick={openFullscreen}\n data-testid=\"expansion-panel-fullscreen\"\n icon={<Icon name=\"open_in_full\" size={18} />}\n />\n </>\n );\n };\n\n const controlBar = (overlay: boolean): JSX.Element => {\n if (local.disableExpand || local.noControls) return null;\n const content = local.renderControls\n ? typeof local.renderControls === \"function\"\n ? local.renderControls(controlsContext(overlay))\n : local.renderControls\n : defaultControls(overlay);\n return <Show when={content}>{(c) => <div class=\"smwb-expansion-panel__controls\">{c() as JSX.Element}</div>}</Show>;\n };\n\n // Lock body scroll while fullscreen.\n createEffect(() => {\n if (!isFullscreen()) return;\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n onCleanup(() => {\n document.body.style.overflow = prev;\n });\n });\n\n // Escape closes fullscreen.\n createEffect(() => {\n if (!isFullscreen() || !local.closeOnEsc) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") setMode(\"tile\");\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const card = (): JSX.Element => (\n <div\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-expansion-panel\", { \"smwb-expansion-panel_row\": isFullRow() }, local.class)}\n data-testid=\"expansion-panel\"\n >\n <div class=\"smwb-expansion-panel__head\">\n <div class=\"smwb-expansion-panel__header\">{local.header}</div>\n {controlBar(false)}\n </div>\n <div class=\"smwb-expansion-panel__body\">{renderChildren(false)}</div>\n </div>\n );\n\n return (\n <Show when={isFullscreen()} fallback={card()}>\n <>\n <div class=\"smwb-expansion-panel__placeholder\" data-testid=\"expansion-panel-placeholder\">\n <span>{labels().placeholder}</span>\n <Button type=\"button\" variant=\"outlined\" size=\"small\" label={labels().placeholderClose} onClick={() => setMode(\"tile\")} />\n </div>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n class=\"smwb-expansion-panel__overlay smwb-dark\"\n role=\"dialog\"\n aria-modal=\"true\"\n data-testid=\"expansion-panel-overlay\"\n onClick={\n local.closeOnOutsideClick\n ? (event) => {\n if (event.target === event.currentTarget) setMode(\"tile\");\n }\n : undefined\n }\n >\n <div class=\"smwb-expansion-panel__dialog\">\n <div class=\"smwb-expansion-panel__head\">\n <div class=\"smwb-expansion-panel__header\">{local.header}</div>\n {controlBar(true)}\n </div>\n <div class=\"smwb-expansion-panel__body smwb-expansion-panel__body_fullscreen\">{renderChildren(true)}</div>\n </div>\n </div>\n </Portal>\n </>\n </Show>\n );\n}\n\nexport default ExpansionPanel;\n"],"names":["DEFAULT_LABELS","expandRow","collapseRow","expandFullscreen","closeFullscreen","placeholder","placeholderClose","ExpansionPanel","props","merged","mergeProps","defaultMode","disableExpand","noControls","closeOnOutsideClick","closeOnEsc","local","splitProps","mode","setMode","createControllableState","value","defaultValue","onChange","next","onModeChange","labels","effectiveMode","isFullRow","isFullscreen","toggleRow","current","openFullscreen","controlsContext","overlay","renderChildren","ctx","children","defaultControls","_$createComponent","Button","type","variant","size","title","onClick","icon","Icon","name","_$memo","controlBar","content","renderControls","Show","when","c","_el$","_tmpl$","_$insert","createEffect","prev","document","body","style","overflow","onCleanup","onKeyDown","event","key","addEventListener","removeEventListener","card","_el$2","_tmpl$2","_el$3","firstChild","_el$4","_el$5","nextSibling","_ref$","mergeRefs","ref","_$use","header","_$effect","_$className","cn","class","fallback","_el$6","_tmpl$3","_el$7","label","Portal","mount","isServer","undefined","_el$8","_tmpl$4","_el$9","_el$0","_el$1","_el$10","_$addEventListener","target","currentTarget","_$delegateEvents"],"mappings":";;;;;;;;;AAqDA,MAAMA,IAAiD;AAAA,EACrDC,WAAW;AAAA,EACXC,aAAa;AAAA,EACbC,kBAAkB;AAAA,EAClBC,iBAAiB;AAAA,EACjBC,aAAa;AAAA,EACbC,kBAAkB;AACpB;AAEO,SAASC,GAAeC,GAAyC;AACtE,QAAMC,IAASC,EACb;AAAA,IAAEC,aAAa;AAAA,IAAyBC,eAAe;AAAA,IAAOC,YAAY;AAAA,IAAOC,qBAAqB;AAAA,IAAMC,YAAY;AAAA,EAAA,GACxHP,CACF,GACM,CAACQ,CAAK,IAAIC,EAAWR,GAAQ,CACjC,SACA,UACA,QACA,eACA,gBACA,iBACA,cACA,kBACA,uBACA,cACA,UACA,YACA,KAAK,CACN,GAEK,CAACS,GAAMC,CAAO,IAAIC,EAAuC;AAAA,IAC7DC,OAAOA,MAAML,EAAME;AAAAA,IACnBI,cAAcN,EAAML;AAAAA,IACpBY,UAAWC,CAAAA,MAASR,EAAMS,eAAeD,CAAI;AAAA,EAAA,CAC9C,GAEKE,IAASA,OAAuC;AAAA,IAAE,GAAG1B;AAAAA,IAAgB,GAAGgB,EAAMU;AAAAA,EAAAA,IAC9EC,IAAgBA,MAAsBX,EAAMJ,gBAAgB,SAASM,EAAAA,GACrEU,IAAYA,MAAeD,EAAAA,MAAoB,OAC/CE,IAAeA,MAAeF,EAAAA,MAAoB,cAElDG,IAAYA,MAAYX,EAASY,OAAaA,MAAY,QAAQ,SAAS,KAAM,GACjFC,IAAiBA,MAAYb,EAAQ,YAAY,GACjDf,IAAkBA,MAAYe,EAAQ,MAAM,GAE5Cc,IAAkBA,CAACC,OAAqD;AAAA,IAC5EhB,MAAMS,EAAAA;AAAAA,IACNE,cAAcK;AAAAA,IACdN,WAAWM,IAAU,KAAQN,EAAAA;AAAAA,IAC7BT,SAAAA;AAAAA,IACAW,WAAAA;AAAAA,IACAE,gBAAAA;AAAAA,IACA5B,iBAAAA;AAAAA,IACAsB,QAAQA,EAAAA;AAAAA,EAAO,IAGXS,IAAiBA,CAACD,MAAkC;AACxD,UAAME,IAAmC;AAAA,MAAElB,MAAMS,EAAAA;AAAAA,MAAiBE,cAAcK;AAAAA,MAASN,WAAWM,IAAU,KAAQN,EAAAA;AAAAA,IAAU;AAChI,WAAO,OAAOZ,EAAMqB,YAAa,aAAarB,EAAMqB,SAASD,CAAG,IAAIpB,EAAMqB;AAAAA,EAC5E,GAEMC,IAAkBA,CAACJ,MACnBA,IACFK,EACGC,GAAM;AAAA,IACLC,MAAI;AAAA,IACJC,SAAO;AAAA,IACPC,MAAI;AAAA,IAAA,IAAA,eAAA;AAAA,aACQjB,IAAStB;AAAAA,IAAe;AAAA,IAAA,IACpCwC,QAAK;AAAA,aAAElB,IAAStB;AAAAA,IAAe;AAAA,IAC/ByC,SAASzC;AAAAA,IAAe,eAAA;AAAA,IAAA,IAExB0C,OAAI;AAAA,aAAAP,EAAGQ,GAAI;AAAA,QAACC,MAAI;AAAA,QAASL,MAAM;AAAA,MAAA,CAAE;AAAA,IAAA;AAAA,EAAA,CAAA,IAIvC,CAAAJ,EAEKC,GAAM;AAAA,IACLC,MAAI;AAAA,IACJC,SAAO;AAAA,IACPC,MAAI;AAAA,IAAA,IAAA,iBAAA;AAAA,aACUf,EAAAA;AAAAA,IAAW;AAAA,IAAA,IAAA,eAAA;AAAA,aACbqB,EAAA,MAAA,CAAA,CAAArB,EAAAA,CAAW,MAAGF,IAASxB,cAAcwB,EAAAA,EAASzB;AAAAA,IAAS;AAAA,IAAA,IACnE2C,QAAK;AAAA,aAAEK,EAAA,MAAA,CAAA,CAAArB,EAAAA,CAAW,MAAGF,IAASxB,cAAcwB,EAAAA,EAASzB;AAAAA,IAAS;AAAA,IAC9D4C,SAASf;AAAAA,IAAS,eAAA;AAAA,IAAA,IAElBgB,OAAI;AAAA,aAAAP,EAAGQ,GAAI;AAAA,QAAA,IAACC,OAAI;AAAA,iBAAEpB,EAAAA,IAAc,cAAc;AAAA,QAAY;AAAA,QAAEe,MAAM;AAAA,MAAA,CAAE;AAAA,IAAA;AAAA,EAAA,CAAA,GAAAJ,EAErEC,GAAM;AAAA,IACLC,MAAI;AAAA,IACJC,SAAO;AAAA,IACPC,MAAI;AAAA,IAAA,IAAA,eAAA;AAAA,aACQjB,IAASvB;AAAAA,IAAgB;AAAA,IAAA,IACrCyC,QAAK;AAAA,aAAElB,IAASvB;AAAAA,IAAgB;AAAA,IAChC0C,SAASb;AAAAA,IAAc,eAAA;AAAA,IAAA,IAEvBc,OAAI;AAAA,aAAAP,EAAGQ,GAAI;AAAA,QAACC,MAAI;AAAA,QAAgBL,MAAM;AAAA,MAAA,CAAE;AAAA,IAAA;AAAA,EAAA,CAAA,CAAA,GAM1CO,IAAaA,CAAChB,MAAkC;AACpD,QAAIlB,EAAMJ,iBAAiBI,EAAMH,WAAY,QAAO;AACpD,UAAMsC,IAAUnC,EAAMoC,iBAClB,OAAOpC,EAAMoC,kBAAmB,aAC9BpC,EAAMoC,eAAenB,EAAgBC,CAAO,CAAC,IAC7ClB,EAAMoC,iBACRd,EAAgBJ,CAAO;AAC3B,WAAAK,EAAQc,GAAI;AAAA,MAACC,MAAMH;AAAAA,MAAOd,UAAIkB,QAAC,MAAA;AAAA,YAAAC,IAAAC,EAAAA;AAAAC,eAAAA,EAAAF,GAAA,MAAkDD,GAAkB,GAAAC;AAAAA,MAAA,GAAA;AAAA,IAAA,CAAO;AAAA,EAC5G;AAGAG,EAAAA,EAAa,MAAM;AACjB,QAAI,CAAC9B,IAAgB;AACrB,UAAM+B,IAAOC,SAASC,KAAKC,MAAMC;AACjCH,aAASC,KAAKC,MAAMC,WAAW,UAC/BC,EAAU,MAAM;AACdJ,eAASC,KAAKC,MAAMC,WAAWJ;AAAAA,IACjC,CAAC;AAAA,EACH,CAAC,GAGDD,EAAa,MAAM;AACjB,QAAI,CAAC9B,EAAAA,KAAkB,CAACb,EAAMD,WAAY;AAC1C,UAAMmD,IAAYA,CAACC,MAA+B;AAChD,MAAIA,EAAMC,QAAQ,YAAUjD,EAAQ,MAAM;AAAA,IAC5C;AACA0C,aAASQ,iBAAiB,WAAWH,CAAS,GAC9CD,EAAU,MAAMJ,SAASS,oBAAoB,WAAWJ,CAAS,CAAC;AAAA,EACpE,CAAC;AAED,QAAMK,IAAOA,OAAe,MAAA;AAAA,QAAAC,IAAAC,KAAAC,IAAAF,EAAAG,YAAAC,IAAAF,EAAAC,YAAAE,IAAAH,EAAAI,aAAAC,IAEnBC,EAAUhE,EAAMiE,GAAG;AAAC,kBAAAF,KAAA,cAAAG,EAAAH,GAAAP,CAAA,GAAAd,EAAAkB,GAAA,MAKoB5D,EAAMmE,MAAM,GAAAzB,EAAAgB,GAAA,MACtDxB,EAAW,EAAK,GAAC,IAAA,GAAAQ,EAAAmB,GAAA,MAEqB1C,EAAe,EAAK,CAAC,GAAAiD,EAAA,MAAAC,EAAAb,GAPvDc,EAAG,wBAAwB;AAAA,MAAE,4BAA4B1D,EAAAA;AAAAA,IAAU,GAAKZ,EAAMuE,KAAK,CAAC,CAAA,GAAAf;AAAAA,EAAA,GAAA;AAW/F,SAAAjC,EACGc,GAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEzB,EAAAA;AAAAA,IAAc;AAAA,IAAA,IAAE2D,WAAQ;AAAA,aAAEjB,EAAAA;AAAAA,IAAM;AAAA,IAAA,IAAAlC,WAAA;AAAA,aAAA,EAAA,MAAA;AAAA,YAAAoD,IAAAC,EAAAA,GAAAC,IAAAF,EAAAd;AAAAjB,eAAAA,EAAAiC,GAAA,MAG/BjE,EAAAA,EAASrB,WAAW,GAAAqD,EAAA+B,GAAAlD,EAC1BC,GAAM;AAAA,UAACC,MAAI;AAAA,UAAUC,SAAO;AAAA,UAAYC,MAAI;AAAA,UAAA,IAASiD,QAAK;AAAA,mBAAElE,IAASpB;AAAAA,UAAgB;AAAA,UAAEuC,SAASA,MAAM1B,EAAQ,MAAM;AAAA,QAAA,CAAC,GAAA,IAAA,GAAAsE;AAAAA,MAAA,GAAA,GAAAlD,EAEvHsD,GAAM;AAAA,QAAA,IAACC,QAAK;AAAA,iBAAGC,IAAWC,SAAYnC,SAASC;AAAAA,QAAa;AAAA,QAAA,IAAAzB,WAAA;AAAA,cAAA4D,IAAAC,EAAAA,GAAAC,IAAAF,EAAAtB,YAAAyB,IAAAD,EAAAxB,YAAA0B,IAAAD,EAAAzB,YAAA2B,IAAAF,EAAAtB;AAAAyB,iBAAAA,EAAAN,GAAA,SAOvDjF,EAAMF,sBACDqD,CAAAA,MAAU;AACT,YAAIA,EAAMqC,WAAWrC,EAAMsC,mBAAuB,MAAM;AAAA,UAC1D,IACAT,QAAS,EAAA,GAAAtC,EAAA2C,GAAA,MAKgCrF,EAAMmE,MAAM,GAAAzB,EAAA0C,GAAA,MACtDlD,EAAW,EAAI,GAAC,IAAA,GAAAQ,EAAA4C,GAAA,MAE4DnE,EAAe,EAAI,CAAC,GAAA8D;AAAAA,QAAA;AAAA,MAAA,CAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAOjH;AAE8BS,EAAA,CAAA,OAAA,CAAA;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { createComponent as n, Portal as l, effect as c, className as d, setAttribute as v,
|
|
2
|
-
import { Show as
|
|
3
|
-
import
|
|
4
|
-
import { createCssTransition as
|
|
5
|
-
var
|
|
6
|
-
function
|
|
7
|
-
const
|
|
1
|
+
import { createComponent as n, Portal as l, effect as c, className as d, setAttribute as v, isServer as g, template as u, delegateEvents as f } from "solid-js/web";
|
|
2
|
+
import { Show as _ } from "solid-js";
|
|
3
|
+
import b from "clsx";
|
|
4
|
+
import { createCssTransition as w } from "../../../../primitives/createCssTransition.js";
|
|
5
|
+
var h = /* @__PURE__ */ u("<div><div class=smwb-image-modal><img alt class=smwb-image-modal__img>");
|
|
6
|
+
function k(r) {
|
|
7
|
+
const i = w({
|
|
8
8
|
in: () => r.isOpen,
|
|
9
9
|
timeout: {
|
|
10
10
|
enter: 100,
|
|
@@ -16,19 +16,19 @@ function y(r) {
|
|
|
16
16
|
},
|
|
17
17
|
appear: !1
|
|
18
18
|
});
|
|
19
|
-
return n(
|
|
19
|
+
return n(_, {
|
|
20
20
|
get when() {
|
|
21
|
-
return
|
|
21
|
+
return i.mounted();
|
|
22
22
|
},
|
|
23
23
|
get children() {
|
|
24
24
|
return n(l, {
|
|
25
25
|
get mount() {
|
|
26
|
-
return document.body;
|
|
26
|
+
return g ? void 0 : document.body;
|
|
27
27
|
},
|
|
28
28
|
get children() {
|
|
29
|
-
var t =
|
|
30
|
-
return t.$$click = () => r.onClose(),
|
|
31
|
-
var o =
|
|
29
|
+
var t = h(), a = t.firstChild, s = a.firstChild;
|
|
30
|
+
return t.$$click = () => r.onClose(), a.$$click = (e) => e.stopPropagation(), c((e) => {
|
|
31
|
+
var o = b("smwb-image-modal__overlay", i.classes()), m = r.src;
|
|
32
32
|
return o !== e.e && d(t, e.e = o), m !== e.t && v(s, "src", e.t = m), e;
|
|
33
33
|
}, {
|
|
34
34
|
e: void 0,
|
|
@@ -39,8 +39,8 @@ function y(r) {
|
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
-
|
|
42
|
+
f(["click"]);
|
|
43
43
|
export {
|
|
44
|
-
|
|
44
|
+
k as ImagesListItemModal
|
|
45
45
|
};
|
|
46
46
|
//# sourceMappingURL=imagesListItemModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imagesListItemModal.js","sources":["../../../../../src/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.tsx"],"sourcesContent":["import { type JSX, Show } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createCssTransition } from \"../../../../primitives/createCssTransition\";\n\nexport interface ImagesListItemModalProps {\n src: string;\n onClose: () => void;\n isOpen: boolean;\n}\n\nexport function ImagesListItemModal(props: ImagesListItemModalProps): JSX.Element {\n const transition = createCssTransition({\n in: () => props.isOpen,\n timeout: { enter: 100, exit: 100 },\n classNames: {\n enterActive: \"smwb-image-modal__overlay-enter-active\",\n enterDone: \"smwb-image-modal__overlay-enter-done\",\n },\n appear: false,\n });\n\n return (\n <Show when={transition.mounted()}>\n <Portal mount={document.body}>\n <div class={cn(\"smwb-image-modal__overlay\", transition.classes())} onClick={() => props.onClose()}>\n <div class=\"smwb-image-modal\" onClick={(event) => event.stopPropagation()}>\n <img src={props.src} alt=\"\" class=\"smwb-image-modal__img\" />\n </div>\n </div>\n </Portal>\n </Show>\n );\n}\n\nexport default ImagesListItemModal;\n"],"names":["ImagesListItemModal","props","transition","createCssTransition","in","isOpen","timeout","enter","exit","classNames","enterActive","enterDone","appear","_$createComponent","Show","when","mounted","children","Portal","mount","document","body","_el$","_tmpl$","_el$2","firstChild","_el$3","$$click","onClose","event","stopPropagation","_$effect","_p$","_v$","cn","classes","_v$2","src","e","_$className","t","_$setAttribute","
|
|
1
|
+
{"version":3,"file":"imagesListItemModal.js","sources":["../../../../../src/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.tsx"],"sourcesContent":["import { type JSX, Show } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createCssTransition } from \"../../../../primitives/createCssTransition\";\n\nexport interface ImagesListItemModalProps {\n src: string;\n onClose: () => void;\n isOpen: boolean;\n}\n\nexport function ImagesListItemModal(props: ImagesListItemModalProps): JSX.Element {\n const transition = createCssTransition({\n in: () => props.isOpen,\n timeout: { enter: 100, exit: 100 },\n classNames: {\n enterActive: \"smwb-image-modal__overlay-enter-active\",\n enterDone: \"smwb-image-modal__overlay-enter-done\",\n },\n appear: false,\n });\n\n return (\n <Show when={transition.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div class={cn(\"smwb-image-modal__overlay\", transition.classes())} onClick={() => props.onClose()}>\n <div class=\"smwb-image-modal\" onClick={(event) => event.stopPropagation()}>\n <img src={props.src} alt=\"\" class=\"smwb-image-modal__img\" />\n </div>\n </div>\n </Portal>\n </Show>\n );\n}\n\nexport default ImagesListItemModal;\n"],"names":["ImagesListItemModal","props","transition","createCssTransition","in","isOpen","timeout","enter","exit","classNames","enterActive","enterDone","appear","_$createComponent","Show","when","mounted","children","Portal","mount","isServer","undefined","document","body","_el$","_tmpl$","_el$2","firstChild","_el$3","$$click","onClose","event","stopPropagation","_$effect","_p$","_v$","cn","classes","_v$2","src","e","_$className","t","_$setAttribute","_$delegateEvents"],"mappings":";;;;;AAWO,SAASA,EAAoBC,GAA8C;AAChF,QAAMC,IAAaC,EAAoB;AAAA,IACrCC,IAAIA,MAAMH,EAAMI;AAAAA,IAChBC,SAAS;AAAA,MAAEC,OAAO;AAAA,MAAKC,MAAM;AAAA,IAAA;AAAA,IAC7BC,YAAY;AAAA,MACVC,aAAa;AAAA,MACbC,WAAW;AAAA,IAAA;AAAA,IAEbC,QAAQ;AAAA,EAAA,CACT;AAED,SAAAC,EACGC,GAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEb,EAAWc,QAAAA;AAAAA,IAAS;AAAA,IAAA,IAAAC,WAAA;AAAA,aAAAJ,EAC7BK,GAAM;AAAA,QAAA,IAACC,QAAK;AAAA,iBAAGC,IAAWC,SAAYC,SAASC;AAAAA,QAAa;AAAA,QAAA,IAAAN,WAAA;AAAA,cAAAO,IAAAC,EAAAA,GAAAC,IAAAF,EAAAG,YAAAC,IAAAF,EAAAC;AAAAH,iBAAAA,EAAAK,UACiB,MAAM5B,EAAM6B,QAAAA,GAASJ,EAAAG,UACvDE,CAAAA,MAAUA,EAAMC,gBAAAA,GAAiBC,EAAAC,CAAAA,MAAA;AAAA,gBAAAC,IAD/DC,EAAG,6BAA6BlC,EAAWmC,SAAS,GAACC,IAEnDrC,EAAMsC;AAAGJ,mBAAAA,MAAAD,EAAAM,KAAAC,EAAAjB,GAAAU,EAAAM,IAAAL,CAAA,GAAAG,MAAAJ,EAAAQ,KAAAC,EAAAf,GAAA,OAAAM,EAAAQ,IAAAJ,CAAA,GAAAJ;AAAAA,UAAA,GAAA;AAAA,YAAAM,GAAAnB;AAAAA,YAAAqB,GAAArB;AAAAA,UAAAA,CAAA,GAAAG;AAAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAM/B;AAEmCoB,EAAA,CAAA,OAAA,CAAA;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { createComponent as d, Portal as f, addEventListener as b, insert as s, Dynamic as w, mergeProps as g, effect as
|
|
1
|
+
import { createComponent as d, Portal as f, addEventListener as b, insert as s, Dynamic as w, mergeProps as g, effect as i, className as l, isServer as y, template as C, delegateEvents as k } from "solid-js/web";
|
|
2
2
|
import '../../../assets/styles/less/components/modal/modal.entry.css';/* empty css */
|
|
3
|
-
import { mergeProps as
|
|
3
|
+
import { mergeProps as A, splitProps as E, createEffect as h, onCleanup as O, Show as $ } from "solid-js";
|
|
4
4
|
import a from "clsx";
|
|
5
|
-
import { createCssTransition as
|
|
6
|
-
import { createFocusTrap as
|
|
7
|
-
import { mergeRefs as
|
|
8
|
-
var c = /* @__PURE__ */
|
|
9
|
-
const
|
|
5
|
+
import { createCssTransition as x } from "../../../primitives/createCssTransition.js";
|
|
6
|
+
import { createFocusTrap as P } from "../../../primitives/createFocusTrap.js";
|
|
7
|
+
import { mergeRefs as F } from "../../../primitives/mergeRefs.js";
|
|
8
|
+
var c = /* @__PURE__ */ C("<div>");
|
|
9
|
+
const L = {
|
|
10
10
|
appear: "smwb-modal__overlay-appear",
|
|
11
11
|
appearActive: "smwb-modal__overlay-appear-active",
|
|
12
12
|
appearDone: "smwb-modal__overlay-appear-done",
|
|
@@ -16,8 +16,8 @@ const F = {
|
|
|
16
16
|
exit: "smwb-modal__overlay-exit",
|
|
17
17
|
exitActive: "smwb-modal__overlay-exit-active"
|
|
18
18
|
};
|
|
19
|
-
function
|
|
20
|
-
const r =
|
|
19
|
+
function S(o) {
|
|
20
|
+
const r = A({
|
|
21
21
|
animation: "fade",
|
|
22
22
|
backdrop: "dark",
|
|
23
23
|
size: "large",
|
|
@@ -26,35 +26,35 @@ function L(o) {
|
|
|
26
26
|
disableAppearAnimation: !1,
|
|
27
27
|
role: "dialog",
|
|
28
28
|
closeOnEsc: !0
|
|
29
|
-
}, o), [e,
|
|
29
|
+
}, o), [e, v] = E(r, ["children", "onClose", "open", "class", "animation", "backdrop", "size", "closeOnOutsideClick", "asForm", "disableAppearAnimation", "role", "closeOnEsc", "ref"]);
|
|
30
30
|
let p;
|
|
31
|
-
const m =
|
|
31
|
+
const m = x({
|
|
32
32
|
in: () => e.open,
|
|
33
33
|
timeout: {
|
|
34
34
|
appear: 225,
|
|
35
35
|
enter: 225,
|
|
36
36
|
exit: 150
|
|
37
37
|
},
|
|
38
|
-
classNames:
|
|
38
|
+
classNames: L,
|
|
39
39
|
appear: !e.disableAppearAnimation
|
|
40
40
|
});
|
|
41
|
-
return
|
|
41
|
+
return P({
|
|
42
42
|
active: () => e.open && m.mounted(),
|
|
43
43
|
container: () => p
|
|
44
|
-
}),
|
|
44
|
+
}), h(() => {
|
|
45
45
|
if (!e.open || !e.closeOnEsc || !e.onClose) return;
|
|
46
46
|
const t = (n) => {
|
|
47
47
|
n.key === "Escape" && e.onClose?.();
|
|
48
48
|
};
|
|
49
|
-
document.addEventListener("keydown", t),
|
|
50
|
-
}), d(
|
|
49
|
+
document.addEventListener("keydown", t), O(() => document.removeEventListener("keydown", t));
|
|
50
|
+
}), d($, {
|
|
51
51
|
get when() {
|
|
52
52
|
return m.mounted();
|
|
53
53
|
},
|
|
54
54
|
get children() {
|
|
55
55
|
return d(f, {
|
|
56
56
|
get mount() {
|
|
57
|
-
return document.body;
|
|
57
|
+
return y ? void 0 : document.body;
|
|
58
58
|
},
|
|
59
59
|
get children() {
|
|
60
60
|
var t = c();
|
|
@@ -62,9 +62,9 @@ function L(o) {
|
|
|
62
62
|
get component() {
|
|
63
63
|
return e.asForm ? "form" : "div";
|
|
64
64
|
}
|
|
65
|
-
},
|
|
65
|
+
}, v, {
|
|
66
66
|
ref(n) {
|
|
67
|
-
var u =
|
|
67
|
+
var u = F(e.ref, (_) => p = _);
|
|
68
68
|
typeof u == "function" && u(n);
|
|
69
69
|
},
|
|
70
70
|
get class() {
|
|
@@ -78,7 +78,7 @@ function L(o) {
|
|
|
78
78
|
get children() {
|
|
79
79
|
return e.children;
|
|
80
80
|
}
|
|
81
|
-
}))),
|
|
81
|
+
}))), i(() => l(t, a("smwb-modal__overlay", `smwb-${e.backdrop}`, `smwb-${e.size}`, m.classes()))), t;
|
|
82
82
|
}
|
|
83
83
|
});
|
|
84
84
|
}
|
|
@@ -87,31 +87,31 @@ function L(o) {
|
|
|
87
87
|
function z(o) {
|
|
88
88
|
return (() => {
|
|
89
89
|
var r = c();
|
|
90
|
-
return s(r, () => o.children),
|
|
90
|
+
return s(r, () => o.children), i(() => l(r, a("smwb-modal__header", o.class))), r;
|
|
91
91
|
})();
|
|
92
92
|
}
|
|
93
93
|
function D(o) {
|
|
94
94
|
return (() => {
|
|
95
95
|
var r = c();
|
|
96
|
-
return s(r, () => o.children),
|
|
96
|
+
return s(r, () => o.children), i(() => l(r, a("smwb-modal__content", o.class))), r;
|
|
97
97
|
})();
|
|
98
98
|
}
|
|
99
|
-
function
|
|
99
|
+
function M(o) {
|
|
100
100
|
return (() => {
|
|
101
101
|
var r = c();
|
|
102
|
-
return s(r, () => o.children),
|
|
102
|
+
return s(r, () => o.children), i(() => l(r, a("smwb-modal__footer", o.class))), r;
|
|
103
103
|
})();
|
|
104
104
|
}
|
|
105
|
-
const
|
|
106
|
-
Footer:
|
|
105
|
+
const V = Object.assign(S, {
|
|
106
|
+
Footer: M,
|
|
107
107
|
Header: z,
|
|
108
108
|
Content: D
|
|
109
109
|
});
|
|
110
|
-
|
|
110
|
+
k(["click"]);
|
|
111
111
|
export {
|
|
112
112
|
D as Content,
|
|
113
|
-
|
|
113
|
+
M as Footer,
|
|
114
114
|
z as Header,
|
|
115
|
-
|
|
115
|
+
V as Modal
|
|
116
116
|
};
|
|
117
117
|
//# sourceMappingURL=modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sources":["../../../../src/components/feedBack/modal/modal.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Dynamic, Portal } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { createFocusTrap } from \"../../../primitives/createFocusTrap\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ModalProps {\n size?: \"small\" | \"medium\" | \"large\" | \"fullscreen\";\n closeOnOutsideClick?: boolean;\n onClose?: () => void;\n open: boolean;\n animation?: \"fade\" | \"scale\" | \"drop\";\n class?: string;\n backdrop?: \"blured\" | \"dark\" | \"transparent\" | \"darkBlured\";\n asForm?: boolean;\n disableAppearAnimation?: boolean;\n /** ARIA role of the dialog. */\n role?: \"dialog\" | \"alertdialog\";\n /** Close the modal when Escape is pressed. */\n closeOnEsc?: boolean;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst OVERLAY_CLASSNAMES = {\n appear: \"smwb-modal__overlay-appear\",\n appearActive: \"smwb-modal__overlay-appear-active\",\n appearDone: \"smwb-modal__overlay-appear-done\",\n enter: \"smwb-modal__overlay-enter\",\n enterActive: \"smwb-modal__overlay-enter-active\",\n enterDone: \"smwb-modal__overlay-enter-done\",\n exit: \"smwb-modal__overlay-exit\",\n exitActive: \"smwb-modal__overlay-exit-active\",\n};\n\nfunction ModalBase(props: ParentProps<ModalProps>): JSX.Element {\n const merged = mergeProps(\n {\n animation: \"fade\" as const,\n backdrop: \"dark\" as const,\n size: \"large\" as const,\n closeOnOutsideClick: true,\n asForm: false,\n disableAppearAnimation: false,\n role: \"dialog\" as const,\n closeOnEsc: true,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"children\",\n \"onClose\",\n \"open\",\n \"class\",\n \"animation\",\n \"backdrop\",\n \"size\",\n \"closeOnOutsideClick\",\n \"asForm\",\n \"disableAppearAnimation\",\n \"role\",\n \"closeOnEsc\",\n \"ref\",\n ]);\n\n let contentEl: HTMLDivElement | undefined;\n\n const transition = createCssTransition({\n in: () => local.open,\n timeout: { appear: 225, enter: 225, exit: 150 },\n classNames: OVERLAY_CLASSNAMES,\n appear: !local.disableAppearAnimation,\n });\n\n createFocusTrap({ active: () => local.open && transition.mounted(), container: () => contentEl });\n\n createEffect(() => {\n if (!local.open || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n return (\n <Show when={transition.mounted()}>\n <Portal mount={document.body}>\n <div\n class={cn(\"smwb-modal__overlay\", `smwb-${local.backdrop}`, `smwb-${local.size}`, transition.classes())}\n onClick={local.closeOnOutsideClick && local.onClose ? () => local.onClose?.() : undefined}\n >\n <Dynamic\n component={local.asForm ? \"form\" : \"div\"}\n {...rest}\n ref={mergeRefs(local.ref, (el) => (contentEl = el as HTMLDivElement))}\n class={cn(\"smwb-modal\", `smwb-${local.size}`, `smwb-${local.animation}`, local.class)}\n onClick={(event: MouseEvent) => event.stopPropagation()}\n role={local.role}\n aria-modal=\"true\"\n >\n {local.children}\n </Dynamic>\n </div>\n </Portal>\n </Show>\n );\n}\n\nexport interface ModalSlotProps {\n class?: string;\n}\n\nexport function Header(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__header\", props.class)}>{props.children}</div>;\n}\n\nexport function Content(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__content\", props.class)}>{props.children}</div>;\n}\n\nexport function Footer(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__footer\", props.class)}>{props.children}</div>;\n}\n\nexport const Modal = Object.assign(ModalBase, { Footer, Header, Content });\n\nexport default Modal;\n"],"names":["OVERLAY_CLASSNAMES","appear","appearActive","appearDone","enter","enterActive","enterDone","exit","exitActive","ModalBase","props","merged","mergeProps","animation","backdrop","size","closeOnOutsideClick","asForm","disableAppearAnimation","role","closeOnEsc","local","rest","splitProps","contentEl","transition","createCssTransition","in","open","timeout","classNames","createFocusTrap","active","mounted","container","createEffect","onClose","onKeyDown","event","key","document","addEventListener","onCleanup","removeEventListener","_$createComponent","Show","when","children","Portal","mount","body","_el$","_tmpl$","_$addEventListener","
|
|
1
|
+
{"version":3,"file":"modal.js","sources":["../../../../src/components/feedBack/modal/modal.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Dynamic, Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { createFocusTrap } from \"../../../primitives/createFocusTrap\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ModalProps {\n size?: \"small\" | \"medium\" | \"large\" | \"fullscreen\";\n closeOnOutsideClick?: boolean;\n onClose?: () => void;\n open: boolean;\n animation?: \"fade\" | \"scale\" | \"drop\";\n class?: string;\n backdrop?: \"blured\" | \"dark\" | \"transparent\" | \"darkBlured\";\n asForm?: boolean;\n disableAppearAnimation?: boolean;\n /** ARIA role of the dialog. */\n role?: \"dialog\" | \"alertdialog\";\n /** Close the modal when Escape is pressed. */\n closeOnEsc?: boolean;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst OVERLAY_CLASSNAMES = {\n appear: \"smwb-modal__overlay-appear\",\n appearActive: \"smwb-modal__overlay-appear-active\",\n appearDone: \"smwb-modal__overlay-appear-done\",\n enter: \"smwb-modal__overlay-enter\",\n enterActive: \"smwb-modal__overlay-enter-active\",\n enterDone: \"smwb-modal__overlay-enter-done\",\n exit: \"smwb-modal__overlay-exit\",\n exitActive: \"smwb-modal__overlay-exit-active\",\n};\n\nfunction ModalBase(props: ParentProps<ModalProps>): JSX.Element {\n const merged = mergeProps(\n {\n animation: \"fade\" as const,\n backdrop: \"dark\" as const,\n size: \"large\" as const,\n closeOnOutsideClick: true,\n asForm: false,\n disableAppearAnimation: false,\n role: \"dialog\" as const,\n closeOnEsc: true,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"children\",\n \"onClose\",\n \"open\",\n \"class\",\n \"animation\",\n \"backdrop\",\n \"size\",\n \"closeOnOutsideClick\",\n \"asForm\",\n \"disableAppearAnimation\",\n \"role\",\n \"closeOnEsc\",\n \"ref\",\n ]);\n\n let contentEl: HTMLDivElement | undefined;\n\n const transition = createCssTransition({\n in: () => local.open,\n timeout: { appear: 225, enter: 225, exit: 150 },\n classNames: OVERLAY_CLASSNAMES,\n appear: !local.disableAppearAnimation,\n });\n\n createFocusTrap({ active: () => local.open && transition.mounted(), container: () => contentEl });\n\n createEffect(() => {\n if (!local.open || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n return (\n <Show when={transition.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n class={cn(\"smwb-modal__overlay\", `smwb-${local.backdrop}`, `smwb-${local.size}`, transition.classes())}\n onClick={local.closeOnOutsideClick && local.onClose ? () => local.onClose?.() : undefined}\n >\n <Dynamic\n component={local.asForm ? \"form\" : \"div\"}\n {...rest}\n ref={mergeRefs(local.ref, (el) => (contentEl = el as HTMLDivElement))}\n class={cn(\"smwb-modal\", `smwb-${local.size}`, `smwb-${local.animation}`, local.class)}\n onClick={(event: MouseEvent) => event.stopPropagation()}\n role={local.role}\n aria-modal=\"true\"\n >\n {local.children}\n </Dynamic>\n </div>\n </Portal>\n </Show>\n );\n}\n\nexport interface ModalSlotProps {\n class?: string;\n}\n\nexport function Header(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__header\", props.class)}>{props.children}</div>;\n}\n\nexport function Content(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__content\", props.class)}>{props.children}</div>;\n}\n\nexport function Footer(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__footer\", props.class)}>{props.children}</div>;\n}\n\nexport const Modal = Object.assign(ModalBase, { Footer, Header, Content });\n\nexport default Modal;\n"],"names":["OVERLAY_CLASSNAMES","appear","appearActive","appearDone","enter","enterActive","enterDone","exit","exitActive","ModalBase","props","merged","mergeProps","animation","backdrop","size","closeOnOutsideClick","asForm","disableAppearAnimation","role","closeOnEsc","local","rest","splitProps","contentEl","transition","createCssTransition","in","open","timeout","classNames","createFocusTrap","active","mounted","container","createEffect","onClose","onKeyDown","event","key","document","addEventListener","onCleanup","removeEventListener","_$createComponent","Show","when","children","Portal","mount","isServer","undefined","body","_el$","_tmpl$","_$addEventListener","_$insert","Dynamic","_$mergeProps","component","ref","r$","_ref$","mergeRefs","el","cn","class","onClick","stopPropagation","_$effect","_$className","classes","Header","_el$2","Content","_el$3","Footer","_el$4","Modal","Object","assign","_$delegateEvents"],"mappings":"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"}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { createComponent as a, mergeProps as $, Portal as ne, use as oe, insert as x, effect as
|
|
1
|
+
import { createComponent as a, mergeProps as $, Portal as ne, use as oe, insert as x, effect as ie, style as le, setAttribute as se, isServer as ce, template as de } from "solid-js/web";
|
|
2
2
|
import '../../../assets/styles/less/components/datePicker/dataPicker.entry.css';/* empty css */
|
|
3
|
-
import { splitProps as
|
|
4
|
-
import { buildFloatingMiddleware as
|
|
5
|
-
import { createFloating as
|
|
6
|
-
import { DataPickerHeader as
|
|
7
|
-
import { DataPickerDays as
|
|
3
|
+
import { splitProps as ue, createSignal as c, createEffect as B, createMemo as ge, onCleanup as me, Show as p } from "solid-js";
|
|
4
|
+
import { buildFloatingMiddleware as fe, resolvePlacement as he } from "../../../utils/floating.js";
|
|
5
|
+
import { createFloating as pe } from "../../../primitives/createFloating.js";
|
|
6
|
+
import { DataPickerHeader as be } from "./dataPickerHeader.js";
|
|
7
|
+
import { DataPickerDays as ve } from "./dataPickerDays.js";
|
|
8
8
|
import { DatePickerList as L } from "./datePickerList.js";
|
|
9
|
-
import { DataPickerInput as
|
|
10
|
-
import { DatePickerIconButton as
|
|
9
|
+
import { DataPickerInput as we } from "./dataPickerInput.js";
|
|
10
|
+
import { DatePickerIconButton as De } from "./datePickerIconButton.js";
|
|
11
11
|
import { OpenView as o } from "./openView.js";
|
|
12
|
-
import { isValidDate as D, getMonths as
|
|
12
|
+
import { isValidDate as D, getMonths as Ce, getYears as ye, getDisplayDate as Y, setYear as ke, setMonth as Ve } from "./dateUtils.js";
|
|
13
13
|
import { mergeRefs as E } from "../../../primitives/mergeRefs.js";
|
|
14
|
-
import { TextField as
|
|
15
|
-
import { Icon as
|
|
16
|
-
import { ClickAwayListener as
|
|
17
|
-
var Fe = /* @__PURE__ */
|
|
14
|
+
import { TextField as Oe } from "../textField/textField.js";
|
|
15
|
+
import { Icon as Pe } from "../../base/icon/icon.js";
|
|
16
|
+
import { ClickAwayListener as Se } from "../../clickAwayListener/clickAwayListener.js";
|
|
17
|
+
var Fe = /* @__PURE__ */ de('<div class=smwb-date-picker data-testid=date-picker role=dialog aria-modal=false style="transition:opacity 150ms ease-in-out"><div class=smwb-date-picker__inner><div class=smwb-date-picker__body>');
|
|
18
18
|
const Me = 150;
|
|
19
|
-
function
|
|
20
|
-
const [e, y] =
|
|
19
|
+
function Je(C) {
|
|
20
|
+
const [e, y] = ue(C, ["value", "onChange", "showDaysOutsideMonth", "disablePast", "disableFuture", "weekStartsOn", "placement", "disabled", "disableCalendar", "calendarAriaLabel", "minDate", "maxDate", "isDateDisabled", "locale", "format", "range", "rangeValue", "onRangeChange", "calendarIcon", "onBlur", "ref"]), b = () => e.value === void 0 ? void 0 : new Date(e.value), k = () => e.rangeValue !== void 0, [q, z] = c([void 0, void 0]), l = () => k() && e.rangeValue ? e.rangeValue : q(), V = b(), [s, u] = c(D(V) ? V : /* @__PURE__ */ new Date()), [g, m] = c(o.days), [H, f] = c(!1);
|
|
21
21
|
let O, P;
|
|
22
|
-
const
|
|
23
|
-
placement: () =>
|
|
24
|
-
middleware: () =>
|
|
22
|
+
const S = () => he(e.placement ?? "bottom-start"), v = pe({
|
|
23
|
+
placement: () => S().placement,
|
|
24
|
+
middleware: () => fe(S())
|
|
25
25
|
});
|
|
26
26
|
B(() => {
|
|
27
27
|
if (e.disabled) return;
|
|
@@ -35,28 +35,28 @@ function Ge(C) {
|
|
|
35
35
|
}, K = () => {
|
|
36
36
|
m(g() === o.years ? o.days : o.years);
|
|
37
37
|
}, N = (t) => {
|
|
38
|
-
u(
|
|
38
|
+
u(Ve(s(), t)), m(o.days);
|
|
39
39
|
}, Q = (t) => {
|
|
40
|
-
u(
|
|
40
|
+
u(ke(s(), t)), m(o.days);
|
|
41
41
|
}, U = (t, n) => {
|
|
42
42
|
if (e.range) {
|
|
43
43
|
if (!n) return;
|
|
44
|
-
const [
|
|
44
|
+
const [i, h] = l();
|
|
45
45
|
let r;
|
|
46
|
-
!
|
|
46
|
+
!i || i && h ? r = [n, void 0] : r = D(i) && n.getTime() < i.getTime() ? [n, i] : [i, n], k() || z(r), e.onRangeChange?.(r), r[0] && r[1] && f(!1);
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
e.onChange?.(t, n, C), f(!1);
|
|
50
|
-
},
|
|
50
|
+
}, F = () => {
|
|
51
51
|
e.disabled || f((t) => !t);
|
|
52
52
|
}, W = (t) => {
|
|
53
53
|
const n = t.target;
|
|
54
54
|
P?.contains(n) || O?.contains(n) || f(!1);
|
|
55
|
-
}, X =
|
|
55
|
+
}, X = ge(() => Ce(e.locale)), Z = ye((/* @__PURE__ */ new Date()).getFullYear(), 100), M = () => H() && !e.disabled && !e.disableCalendar, [A, I] = c(M()), [ee, _] = c(!1);
|
|
56
56
|
let w, d;
|
|
57
57
|
B(() => {
|
|
58
|
-
|
|
59
|
-
}),
|
|
58
|
+
M() ? (d !== void 0 && clearTimeout(d), I(!0), w = requestAnimationFrame(() => _(!0))) : (_(!1), A() && (d = setTimeout(() => I(!1), Me)));
|
|
59
|
+
}), me(() => {
|
|
60
60
|
w !== void 0 && cancelAnimationFrame(w), d !== void 0 && clearTimeout(d);
|
|
61
61
|
});
|
|
62
62
|
const te = () => {
|
|
@@ -80,7 +80,7 @@ function Ge(C) {
|
|
|
80
80
|
onChange: Q
|
|
81
81
|
});
|
|
82
82
|
default:
|
|
83
|
-
return a(
|
|
83
|
+
return a(ve, {
|
|
84
84
|
get viewValue() {
|
|
85
85
|
return s();
|
|
86
86
|
},
|
|
@@ -116,20 +116,20 @@ function Ge(C) {
|
|
|
116
116
|
return e.range;
|
|
117
117
|
},
|
|
118
118
|
get rangeStart() {
|
|
119
|
-
return
|
|
119
|
+
return l()[0];
|
|
120
120
|
},
|
|
121
121
|
get rangeEnd() {
|
|
122
|
-
return
|
|
122
|
+
return l()[1];
|
|
123
123
|
}
|
|
124
124
|
});
|
|
125
125
|
}
|
|
126
|
-
}, re = () => e.range && (
|
|
126
|
+
}, re = () => e.range && (l()[0] || l()[1]) ? `${Y(l()[0], e.format)} – ${Y(l()[1], e.format)}` : "", R = E(e.ref, v.setReference, (t) => O = t);
|
|
127
127
|
return [a(p, {
|
|
128
128
|
get when() {
|
|
129
129
|
return e.range;
|
|
130
130
|
},
|
|
131
131
|
get fallback() {
|
|
132
|
-
return a(
|
|
132
|
+
return a(we, $({
|
|
133
133
|
ref: R,
|
|
134
134
|
get value() {
|
|
135
135
|
return e.value;
|
|
@@ -140,7 +140,7 @@ function Ge(C) {
|
|
|
140
140
|
get onBlur() {
|
|
141
141
|
return e.onBlur;
|
|
142
142
|
},
|
|
143
|
-
onToggle:
|
|
143
|
+
onToggle: F,
|
|
144
144
|
get disabled() {
|
|
145
145
|
return e.disabled;
|
|
146
146
|
},
|
|
@@ -156,7 +156,7 @@ function Ge(C) {
|
|
|
156
156
|
}, y));
|
|
157
157
|
},
|
|
158
158
|
get children() {
|
|
159
|
-
return a(
|
|
159
|
+
return a(Oe, $({
|
|
160
160
|
ref: R,
|
|
161
161
|
get value() {
|
|
162
162
|
return re();
|
|
@@ -176,9 +176,9 @@ function Ge(C) {
|
|
|
176
176
|
return !e.disableCalendar;
|
|
177
177
|
},
|
|
178
178
|
get children() {
|
|
179
|
-
return a(
|
|
179
|
+
return a(De, {
|
|
180
180
|
edge: "end",
|
|
181
|
-
onClick:
|
|
181
|
+
onClick: F,
|
|
182
182
|
get disabled() {
|
|
183
183
|
return !!e.disabled;
|
|
184
184
|
},
|
|
@@ -189,7 +189,7 @@ function Ge(C) {
|
|
|
189
189
|
return e.calendarIcon;
|
|
190
190
|
},
|
|
191
191
|
get fallback() {
|
|
192
|
-
return a(
|
|
192
|
+
return a(Pe, {
|
|
193
193
|
name: "calendar_today",
|
|
194
194
|
fill: 1,
|
|
195
195
|
weight: 500,
|
|
@@ -214,14 +214,14 @@ function Ge(C) {
|
|
|
214
214
|
get children() {
|
|
215
215
|
return a(ne, {
|
|
216
216
|
get mount() {
|
|
217
|
-
return document.body;
|
|
217
|
+
return ce ? void 0 : document.body;
|
|
218
218
|
},
|
|
219
219
|
get children() {
|
|
220
|
-
return a(
|
|
220
|
+
return a(Se, {
|
|
221
221
|
onClickAway: W,
|
|
222
222
|
get children() {
|
|
223
|
-
var t = Fe(), n = t.firstChild,
|
|
224
|
-
return typeof h == "function" && oe(h, t), x(n, a(
|
|
223
|
+
var t = Fe(), n = t.firstChild, i = n.firstChild, h = E(v.setFloating, (r) => P = r);
|
|
224
|
+
return typeof h == "function" && oe(h, t), x(n, a(be, {
|
|
225
225
|
get viewValue() {
|
|
226
226
|
return s();
|
|
227
227
|
},
|
|
@@ -234,12 +234,12 @@ function Ge(C) {
|
|
|
234
234
|
onChange: G,
|
|
235
235
|
onMonthLabelClick: J,
|
|
236
236
|
onYearLabelClick: K
|
|
237
|
-
}),
|
|
237
|
+
}), i), x(i, te), ie((r) => {
|
|
238
238
|
var ae = {
|
|
239
239
|
...v.floatingStyles(),
|
|
240
240
|
opacity: ee() ? 1 : 0
|
|
241
241
|
}, T = e.calendarAriaLabel ?? "Choose date";
|
|
242
|
-
return r.e =
|
|
242
|
+
return r.e = le(t, ae, r.e), T !== r.t && se(t, "aria-label", r.t = T), r;
|
|
243
243
|
}, {
|
|
244
244
|
e: void 0,
|
|
245
245
|
t: void 0
|
|
@@ -252,7 +252,7 @@ function Ge(C) {
|
|
|
252
252
|
})];
|
|
253
253
|
}
|
|
254
254
|
export {
|
|
255
|
-
|
|
255
|
+
Je as DatePicker,
|
|
256
256
|
o as OpenView
|
|
257
257
|
};
|
|
258
258
|
//# sourceMappingURL=datePicker.js.map
|