neko-ui 2.9.8-beta.3 → 2.9.8-beta.4
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/es/dropdown/index.d.ts
CHANGED
|
@@ -7,10 +7,14 @@ export interface BaseDropdownProps extends Omit<PopoverProps, 'content'> {
|
|
|
7
7
|
export interface DropdownProps extends Omit<MenuProps, 'openKeys' | 'onOpenChange'>, BaseDropdownProps {
|
|
8
8
|
/** 打开内容气泡 */
|
|
9
9
|
open?: boolean | null;
|
|
10
|
+
/** menu样式表 */
|
|
11
|
+
menuCss?: string;
|
|
10
12
|
}
|
|
11
13
|
export interface DropdownMultipleProps extends Omit<MenuMultipleProps, 'openKeys' | 'onOpenChange'>, BaseDropdownProps {
|
|
12
14
|
/** 打开内容气泡 */
|
|
13
15
|
open?: boolean | null;
|
|
16
|
+
/** menu样式表 */
|
|
17
|
+
menuCss?: string;
|
|
14
18
|
}
|
|
15
19
|
export type DropdownElement = CustomElement<DropdownProps>;
|
|
16
20
|
export type DropdownMultipleElement = CustomElement<DropdownMultipleProps>;
|
|
@@ -26,6 +30,7 @@ export declare const defaultProps: {
|
|
|
26
30
|
type: undefined;
|
|
27
31
|
onOpenChange: undefined;
|
|
28
32
|
openKeys: undefined;
|
|
33
|
+
menuCss: undefined;
|
|
29
34
|
class: undefined;
|
|
30
35
|
css: undefined;
|
|
31
36
|
content: undefined;
|
package/es/dropdown/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(){return(e=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}import{use as o}from"solid-js/web";import{template as t}from"solid-js/web";import{mergeProps as n}from"solid-js/web";import{insert as i}from"solid-js/web";import{getOwner as
|
|
1
|
+
function e(){return(e=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}import{use as o}from"solid-js/web";import{template as t}from"solid-js/web";import{mergeProps as n}from"solid-js/web";import{insert as i}from"solid-js/web";import{getOwner as s}from"solid-js/web";import{effect as l}from"solid-js/web";import{createComponent as r}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let p=t("<n-menu>",!0,!1),d=t('<div class="container">'),v=t("<style>");import{createEffect as u,createSignal as m,mergeProps as f,Show as g,splitProps as c,untrack as h}from"solid-js";import C from"@moneko/common/lib/isFunction";import{customElement as $}from"solid-element";import{clearAttribute as _}from"../basic-config";import b from"../empty";import w,{defaultProps as y}from"../popover";import{inline as j}from"../theme";import"../menu";function O(e){let t;let[v,f]=c(e,["popupClass","popupCss","menuCss","value","defaultValue","onChange","open","onOpenChange","fieldNames","items","multiple","toggle"]),[$,_]=m([]),[y,j]=m(null),[O,N]=m([]);function E(e){C(v.onOpenChange)&&v.onOpenChange(e),void 0===v.open&&j(e)}function P(e){let[o,t]=e.detail;C(v.onChange)&&v.onChange(o,t),void 0===v.value&&_(Array.isArray(o)?o:[o]),v.multiple||E(!1)}function A(e){N(e.detail)}return u(()=>{void 0!==v.value&&null!==v.value?_(Array.isArray(v.value)?v.value:[v.value]):_([])}),u(()=>{void 0!==v.open&&h(y)!==v.open&&j(v.open)}),r(w,n({get popupClass(){return v.popupClass},get popupCss(){return v.popupCss},get open(){return y()},onOpenChange:E,get content(){return(()=>{let e=d(),n=t;return"function"==typeof n?o(n,e):t=e,i(e,r(g,{get when(){var u;return null==(u=v.items)?void 0:u.length},get fallback(){return r(b,{style:{width:"100%"}})},get children(){let e=p();return a(e,"openchange",A),a(e,"change",P),e._$owner=s(),l(o=>{let t=v.items,n=v.defaultValue,i=v.multiple,s=v.fieldNames,l=v.toggle,r=f.disabled,a=O(),p=v.menuCss;return t!==o._v$&&(e.items=o._v$=t),n!==o._v$2&&(e.defaultValue=o._v$2=n),i!==o._v$3&&(e.multiple=o._v$3=i),s!==o._v$4&&(e.fieldNames=o._v$4=s),l!==o._v$5&&(e.toggle=o._v$5=l),r!==o._v$6&&(e.disabled=o._v$6=r),a!==o._v$7&&(e.openKeys=o._v$7=a),p!==o._v$8&&(e.css=o._v$8=p),o},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0,_v$8:void 0}),l(()=>e.value=$()),e}})),e})()}},f))}export const defaultProps=e({},y,{fieldNames:void 0,toggle:void 0,value:void 0,defaultValue:void 0,onChange:void 0,multiple:void 0,disabled:void 0,type:void 0,onOpenChange:void 0,openKeys:void 0,menuCss:void 0});$("n-dropdown",e({},defaultProps,{items:[]}),(e,o)=>{let t=o.element,n=f({items:t.items,onChange(e,o){t.dispatchEvent(new CustomEvent("change",{detail:[e,o]}))},onOpenChange(e){t.dispatchEvent(new CustomEvent("openchange",{detail:e}))},children:[...t.childNodes.values()]},e);return u(()=>{_(t,["popupCss","css","items","fieldNames","content"])}),[(()=>{let e=v();return e.textContent=j,e})(),r(O,n)]});export default O;
|
package/es/dropdown/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["components/dropdown/index.tsx"],"sourcesContent":["import { createEffect, createSignal, mergeProps, Show, splitProps, untrack } from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement, MenuMultipleProps, MenuOption, MenuProps, PopoverProps } from '..';\nimport { clearAttribute } from '../basic-config';\nimport Empty from '../empty';\nimport Popover, { defaultProps as popoverProps } from '../popover';\nimport { inline } from '../theme';\n\nimport '../menu';\n\nexport interface BaseDropdownProps extends Omit<PopoverProps, 'content'> {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport interface DropdownProps\n extends Omit<MenuProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport interface DropdownMultipleProps\n extends Omit<MenuMultipleProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport type DropdownElement = CustomElement<DropdownProps>;\nexport type DropdownMultipleElement = CustomElement<DropdownMultipleProps>;\n\nfunction Dropdown(props: DropdownProps | DropdownMultipleProps) {\n const [local, other] = splitProps(props, [\n 'popupClass',\n 'popupCss',\n 'value',\n 'defaultValue',\n 'onChange',\n 'open',\n 'onOpenChange',\n 'fieldNames',\n 'items',\n 'multiple',\n 'toggle',\n ]);\n let portalRef: HTMLDivElement | undefined;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [menuOpenKeys, setMenuOpenKeys] = createSignal<(string | number)[]>([]);\n\n function openChange(next: boolean | null) {\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n\n function change(\n e: CustomEvent<[val: (string | number)[] | (string | number), item: MenuOption]>,\n ) {\n const [key, item] = e.detail;\n\n if (isFunction(local.onChange)) {\n local.onChange(key, item);\n }\n if (local.value === void 0) {\n setValue(Array.isArray(key) ? key : [key]);\n }\n if (!local.multiple) {\n openChange(false);\n }\n }\n function menuOpenKeysChange(e: CustomEvent<(string | number)[]>) {\n setMenuOpenKeys(e.detail);\n }\n\n createEffect(() => {\n if (local.value !== void 0 && local.value !== null) {\n setValue(Array.isArray(local.value) ? local.value : [local.value]);\n } else {\n setValue([]);\n }\n });\n createEffect(() => {\n if (local.open !== void 0 && untrack(open) !== local.open) {\n setOpen(local.open);\n }\n });\n\n return (\n <Popover\n popupClass={local.popupClass}\n popupCss={local.popupCss}\n open={open()}\n onOpenChange={openChange}\n content={\n <div ref={portalRef} class=\"container\">\n <Show when={local.items?.length} fallback={<Empty style={{ width: '100%' }} />}>\n <n-menu\n items={local.items}\n default-value={local.defaultValue}\n multiple={local.multiple as true}\n field-names={local.fieldNames}\n toggle={local.toggle}\n disabled={other.disabled}\n value={value()}\n onChange={change}\n open-keys={menuOpenKeys()}\n onOpenChange={menuOpenKeysChange}\n />\n </Show>\n </div>\n }\n {...other}\n />\n );\n}\n\nexport const defaultProps = {\n ...popoverProps,\n fieldNames: void 0,\n toggle: void 0,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n multiple: void 0,\n disabled: void 0,\n type: void 0,\n onOpenChange: void 0,\n openKeys: void 0,\n};\n\ncustomElement<DropdownProps>(\n 'n-dropdown',\n {\n ...defaultProps,\n items: [],\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n items: el.items,\n onChange(key, item) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n children: [...el.childNodes.values()],\n } as DropdownProps,\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['popupCss', 'css', 'items', 'fieldNames', 'content']);\n });\n return (\n <>\n <style textContent={inline} />\n <Dropdown {...props} />\n </>\n );\n },\n);\nexport default Dropdown;\n"],"names":["createEffect","createSignal","mergeProps","Show","splitProps","untrack","isFunction","customElement","clearAttribute","Empty","Popover","defaultProps","popoverProps","inline","Dropdown","props","portalRef","local","other","value","setValue","open","setOpen","menuOpenKeys","setMenuOpenKeys","openChange","next","onOpenChange","change","e","key","item","detail","onChange","Array","isArray","multiple","menuOpenKeysChange","popupClass","popupCss","items","length","width","defaultValue","fieldNames","toggle","disabled","type","openKeys","_","opt","el","element","dispatchEvent","CustomEvent","children","childNodes","values"],"mappings":"8lBAAA,QAASA,gBAAAA,CAAY,CAAEC,gBAAAA,CAAY,CAAEC,cAAAA,CAAU,CAAEC,QAAAA,CAAI,CAAEC,cAAAA,CAAU,CAAEC,WAAAA,CAAO,KAAQ,UAAW,AAC7F,QAASC,MAAkB,+BAAiB,AAC5C,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAG9C,QAASC,kBAAAA,CAAc,KAAQ,iBAAkB,AACjD,QAAOC,MAAW,UAAW,AAC7B,QAAOC,GAAWC,gBAAgBC,CAAY,KAAQ,YAAa,AACnE,QAASC,UAAAA,CAAM,KAAQ,UAAW,AAElC,OAAO,SAAU,
|
|
1
|
+
{"version":3,"sources":["components/dropdown/index.tsx"],"sourcesContent":["import { createEffect, createSignal, mergeProps, Show, splitProps, untrack } from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement, MenuMultipleProps, MenuOption, MenuProps, PopoverProps } from '..';\nimport { clearAttribute } from '../basic-config';\nimport Empty from '../empty';\nimport Popover, { defaultProps as popoverProps } from '../popover';\nimport { inline } from '../theme';\n\nimport '../menu';\n\nexport interface BaseDropdownProps extends Omit<PopoverProps, 'content'> {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\n\nexport interface DropdownProps\n extends Omit<MenuProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n /** menu样式表 */\n menuCss?: string;\n}\nexport interface DropdownMultipleProps\n extends Omit<MenuMultipleProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n /** menu样式表 */\n menuCss?: string;\n}\nexport type DropdownElement = CustomElement<DropdownProps>;\nexport type DropdownMultipleElement = CustomElement<DropdownMultipleProps>;\n\nfunction Dropdown(props: DropdownProps | DropdownMultipleProps) {\n const [local, other] = splitProps(props, [\n 'popupClass',\n 'popupCss',\n 'menuCss',\n 'value',\n 'defaultValue',\n 'onChange',\n 'open',\n 'onOpenChange',\n 'fieldNames',\n 'items',\n 'multiple',\n 'toggle',\n ]);\n let portalRef: HTMLDivElement | undefined;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [menuOpenKeys, setMenuOpenKeys] = createSignal<(string | number)[]>([]);\n\n function openChange(next: boolean | null) {\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n\n function change(\n e: CustomEvent<[val: (string | number)[] | (string | number), item: MenuOption]>,\n ) {\n const [key, item] = e.detail;\n\n if (isFunction(local.onChange)) {\n local.onChange(key, item);\n }\n if (local.value === void 0) {\n setValue(Array.isArray(key) ? key : [key]);\n }\n if (!local.multiple) {\n openChange(false);\n }\n }\n function menuOpenKeysChange(e: CustomEvent<(string | number)[]>) {\n setMenuOpenKeys(e.detail);\n }\n\n createEffect(() => {\n if (local.value !== void 0 && local.value !== null) {\n setValue(Array.isArray(local.value) ? local.value : [local.value]);\n } else {\n setValue([]);\n }\n });\n createEffect(() => {\n if (local.open !== void 0 && untrack(open) !== local.open) {\n setOpen(local.open);\n }\n });\n\n return (\n <Popover\n popupClass={local.popupClass}\n popupCss={local.popupCss}\n open={open()}\n onOpenChange={openChange}\n content={\n <div ref={portalRef} class=\"container\">\n <Show when={local.items?.length} fallback={<Empty style={{ width: '100%' }} />}>\n <n-menu\n items={local.items}\n default-value={local.defaultValue}\n multiple={local.multiple as true}\n field-names={local.fieldNames}\n toggle={local.toggle}\n disabled={other.disabled}\n value={value()}\n onChange={change}\n open-keys={menuOpenKeys()}\n onOpenChange={menuOpenKeysChange}\n css={local.menuCss}\n />\n </Show>\n </div>\n }\n {...other}\n />\n );\n}\n\nexport const defaultProps = {\n ...popoverProps,\n fieldNames: void 0,\n toggle: void 0,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n multiple: void 0,\n disabled: void 0,\n type: void 0,\n onOpenChange: void 0,\n openKeys: void 0,\n menuCss: void 0,\n};\n\ncustomElement<DropdownProps>(\n 'n-dropdown',\n {\n ...defaultProps,\n items: [],\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n items: el.items,\n onChange(key, item) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n children: [...el.childNodes.values()],\n } as DropdownProps,\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['popupCss', 'css', 'items', 'fieldNames', 'content']);\n });\n return (\n <>\n <style textContent={inline} />\n <Dropdown {...props} />\n </>\n );\n },\n);\nexport default Dropdown;\n"],"names":["createEffect","createSignal","mergeProps","Show","splitProps","untrack","isFunction","customElement","clearAttribute","Empty","Popover","defaultProps","popoverProps","inline","Dropdown","props","portalRef","local","other","value","setValue","open","setOpen","menuOpenKeys","setMenuOpenKeys","openChange","next","onOpenChange","change","e","key","item","detail","onChange","Array","isArray","multiple","menuOpenKeysChange","popupClass","popupCss","items","length","width","defaultValue","fieldNames","toggle","disabled","menuCss","type","openKeys","_","opt","el","element","dispatchEvent","CustomEvent","children","childNodes","values"],"mappings":"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"}
|
package/lib/dropdown/index.d.ts
CHANGED
|
@@ -7,10 +7,14 @@ export interface BaseDropdownProps extends Omit<PopoverProps, 'content'> {
|
|
|
7
7
|
export interface DropdownProps extends Omit<MenuProps, 'openKeys' | 'onOpenChange'>, BaseDropdownProps {
|
|
8
8
|
/** 打开内容气泡 */
|
|
9
9
|
open?: boolean | null;
|
|
10
|
+
/** menu样式表 */
|
|
11
|
+
menuCss?: string;
|
|
10
12
|
}
|
|
11
13
|
export interface DropdownMultipleProps extends Omit<MenuMultipleProps, 'openKeys' | 'onOpenChange'>, BaseDropdownProps {
|
|
12
14
|
/** 打开内容气泡 */
|
|
13
15
|
open?: boolean | null;
|
|
16
|
+
/** menu样式表 */
|
|
17
|
+
menuCss?: string;
|
|
14
18
|
}
|
|
15
19
|
export type DropdownElement = CustomElement<DropdownProps>;
|
|
16
20
|
export type DropdownMultipleElement = CustomElement<DropdownMultipleProps>;
|
|
@@ -26,6 +30,7 @@ export declare const defaultProps: {
|
|
|
26
30
|
type: undefined;
|
|
27
31
|
onOpenChange: undefined;
|
|
28
32
|
openKeys: undefined;
|
|
33
|
+
menuCss: undefined;
|
|
29
34
|
class: undefined;
|
|
30
35
|
css: undefined;
|
|
31
36
|
content: undefined;
|
package/lib/dropdown/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";function e(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}Object.defineProperty(exports,"__esModule",{value:!0}),e(exports,{default:function(){return _},defaultProps:function(){return
|
|
1
|
+
"use strict";function e(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}Object.defineProperty(exports,"__esModule",{value:!0}),e(exports,{default:function(){return _},defaultProps:function(){return g}});const t=require("solid-js/web"),n=require("solid-js"),o=s(require("@moneko/common/lib/isFunction")),r=require("solid-element"),i=require("../basic-config"),l=s(require("../empty")),u=d(require("../popover")),a=require("../theme");function s(e){return e&&e.__esModule?e:{default:e}}function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}function d(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var l=r?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(o,i,l):o[i]=e[i]}return o.default=e,n&&n.set(e,o),o}require("../menu");const v=(0,t.template)("<n-menu>",!0,!1),c=(0,t.template)('<div class="container">'),f=(0,t.template)("<style>");function m(e){let r;let[i,a]=(0,n.splitProps)(e,["popupClass","popupCss","menuCss","value","defaultValue","onChange","open","onOpenChange","fieldNames","items","multiple","toggle"]),[s,p]=(0,n.createSignal)([]),[d,f]=(0,n.createSignal)(null),[m,g]=(0,n.createSignal)([]);function _(e){(0,o.default)(i.onOpenChange)&&i.onOpenChange(e),void 0===i.open&&f(e)}function C(e){let[t,n]=e.detail;(0,o.default)(i.onChange)&&i.onChange(t,n),void 0===i.value&&p(Array.isArray(t)?t:[t]),i.multiple||_(!1)}function h(e){g(e.detail)}return(0,n.createEffect)(()=>{void 0!==i.value&&null!==i.value?p(Array.isArray(i.value)?i.value:[i.value]):p([])}),(0,n.createEffect)(()=>{void 0!==i.open&&(0,n.untrack)(d)!==i.open&&f(i.open)}),(0,t.createComponent)(u.default,(0,t.mergeProps)({get popupClass(){return i.popupClass},get popupCss(){return i.popupCss},get open(){return d()},onOpenChange:_,get content(){return(()=>{let e=c(),o=r;return"function"==typeof o?(0,t.use)(o,e):r=e,(0,t.insert)(e,(0,t.createComponent)(n.Show,{get when(){return i.items?.length},get fallback(){return(0,t.createComponent)(l.default,{style:{width:"100%"}})},get children(){let e=v();return(0,t.addEventListener)(e,"openchange",h),(0,t.addEventListener)(e,"change",C),e._$owner=(0,t.getOwner)(),(0,t.effect)(t=>{let n=i.items,o=i.defaultValue,r=i.multiple,l=i.fieldNames,u=i.toggle,s=a.disabled,p=m(),d=i.menuCss;return n!==t._v$&&(e.items=t._v$=n),o!==t._v$2&&(e.defaultValue=t._v$2=o),r!==t._v$3&&(e.multiple=t._v$3=r),l!==t._v$4&&(e.fieldNames=t._v$4=l),u!==t._v$5&&(e.toggle=t._v$5=u),s!==t._v$6&&(e.disabled=t._v$6=s),p!==t._v$7&&(e.openKeys=t._v$7=p),d!==t._v$8&&(e.css=t._v$8=d),t},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0,_v$8:void 0}),(0,t.effect)(()=>e.value=s()),e}})),e})()}},a))}const g={...u.defaultProps,fieldNames:void 0,toggle:void 0,value:void 0,defaultValue:void 0,onChange:void 0,multiple:void 0,disabled:void 0,type:void 0,onOpenChange:void 0,openKeys:void 0,menuCss:void 0};(0,r.customElement)("n-dropdown",{...g,items:[]},(e,o)=>{let r=o.element,l=(0,n.mergeProps)({items:r.items,onChange(e,t){r.dispatchEvent(new CustomEvent("change",{detail:[e,t]}))},onOpenChange(e){r.dispatchEvent(new CustomEvent("openchange",{detail:e}))},children:[...r.childNodes.values()]},e);return(0,n.createEffect)(()=>{(0,i.clearAttribute)(r,["popupCss","css","items","fieldNames","content"])}),[(()=>{let e=f();return e.textContent=a.inline,e})(),(0,t.createComponent)(m,l)]});const _=m;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["components/dropdown/index.tsx"],"sourcesContent":["import { createEffect, createSignal, mergeProps, Show, splitProps, untrack } from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement, MenuMultipleProps, MenuOption, MenuProps, PopoverProps } from '..';\nimport { clearAttribute } from '../basic-config';\nimport Empty from '../empty';\nimport Popover, { defaultProps as popoverProps } from '../popover';\nimport { inline } from '../theme';\n\nimport '../menu';\n\nexport interface BaseDropdownProps extends Omit<PopoverProps, 'content'> {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport interface DropdownProps\n extends Omit<MenuProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport interface DropdownMultipleProps\n extends Omit<MenuMultipleProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport type DropdownElement = CustomElement<DropdownProps>;\nexport type DropdownMultipleElement = CustomElement<DropdownMultipleProps>;\n\nfunction Dropdown(props: DropdownProps | DropdownMultipleProps) {\n const [local, other] = splitProps(props, [\n 'popupClass',\n 'popupCss',\n 'value',\n 'defaultValue',\n 'onChange',\n 'open',\n 'onOpenChange',\n 'fieldNames',\n 'items',\n 'multiple',\n 'toggle',\n ]);\n let portalRef: HTMLDivElement | undefined;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [menuOpenKeys, setMenuOpenKeys] = createSignal<(string | number)[]>([]);\n\n function openChange(next: boolean | null) {\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n\n function change(\n e: CustomEvent<[val: (string | number)[] | (string | number), item: MenuOption]>,\n ) {\n const [key, item] = e.detail;\n\n if (isFunction(local.onChange)) {\n local.onChange(key, item);\n }\n if (local.value === void 0) {\n setValue(Array.isArray(key) ? key : [key]);\n }\n if (!local.multiple) {\n openChange(false);\n }\n }\n function menuOpenKeysChange(e: CustomEvent<(string | number)[]>) {\n setMenuOpenKeys(e.detail);\n }\n\n createEffect(() => {\n if (local.value !== void 0 && local.value !== null) {\n setValue(Array.isArray(local.value) ? local.value : [local.value]);\n } else {\n setValue([]);\n }\n });\n createEffect(() => {\n if (local.open !== void 0 && untrack(open) !== local.open) {\n setOpen(local.open);\n }\n });\n\n return (\n <Popover\n popupClass={local.popupClass}\n popupCss={local.popupCss}\n open={open()}\n onOpenChange={openChange}\n content={\n <div ref={portalRef} class=\"container\">\n <Show when={local.items?.length} fallback={<Empty style={{ width: '100%' }} />}>\n <n-menu\n items={local.items}\n default-value={local.defaultValue}\n multiple={local.multiple as true}\n field-names={local.fieldNames}\n toggle={local.toggle}\n disabled={other.disabled}\n value={value()}\n onChange={change}\n open-keys={menuOpenKeys()}\n onOpenChange={menuOpenKeysChange}\n />\n </Show>\n </div>\n }\n {...other}\n />\n );\n}\n\nexport const defaultProps = {\n ...popoverProps,\n fieldNames: void 0,\n toggle: void 0,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n multiple: void 0,\n disabled: void 0,\n type: void 0,\n onOpenChange: void 0,\n openKeys: void 0,\n};\n\ncustomElement<DropdownProps>(\n 'n-dropdown',\n {\n ...defaultProps,\n items: [],\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n items: el.items,\n onChange(key, item) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n children: [...el.childNodes.values()],\n } as DropdownProps,\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['popupCss', 'css', 'items', 'fieldNames', 'content']);\n });\n return (\n <>\n <style textContent={inline} />\n <Dropdown {...props} />\n </>\n );\n },\n);\nexport default Dropdown;\n"],"names":["defaultProps","Dropdown","props","portalRef","local","other","splitProps","value","setValue","createSignal","open","setOpen","menuOpenKeys","setMenuOpenKeys","openChange","next","isFunction","onOpenChange","change","e","key","item","detail","onChange","Array","isArray","multiple","menuOpenKeysChange","createEffect","untrack","Popover","popupClass","popupCss","Show","items","length","Empty","width","defaultValue","fieldNames","toggle","disabled","popoverProps","type","openKeys","customElement","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","children","childNodes","values","clearAttribute","inline"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["components/dropdown/index.tsx"],"sourcesContent":["import { createEffect, createSignal, mergeProps, Show, splitProps, untrack } from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement, MenuMultipleProps, MenuOption, MenuProps, PopoverProps } from '..';\nimport { clearAttribute } from '../basic-config';\nimport Empty from '../empty';\nimport Popover, { defaultProps as popoverProps } from '../popover';\nimport { inline } from '../theme';\n\nimport '../menu';\n\nexport interface BaseDropdownProps extends Omit<PopoverProps, 'content'> {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\n\nexport interface DropdownProps\n extends Omit<MenuProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n /** menu样式表 */\n menuCss?: string;\n}\nexport interface DropdownMultipleProps\n extends Omit<MenuMultipleProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n /** menu样式表 */\n menuCss?: string;\n}\nexport type DropdownElement = CustomElement<DropdownProps>;\nexport type DropdownMultipleElement = CustomElement<DropdownMultipleProps>;\n\nfunction Dropdown(props: DropdownProps | DropdownMultipleProps) {\n const [local, other] = splitProps(props, [\n 'popupClass',\n 'popupCss',\n 'menuCss',\n 'value',\n 'defaultValue',\n 'onChange',\n 'open',\n 'onOpenChange',\n 'fieldNames',\n 'items',\n 'multiple',\n 'toggle',\n ]);\n let portalRef: HTMLDivElement | undefined;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [menuOpenKeys, setMenuOpenKeys] = createSignal<(string | number)[]>([]);\n\n function openChange(next: boolean | null) {\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n\n function change(\n e: CustomEvent<[val: (string | number)[] | (string | number), item: MenuOption]>,\n ) {\n const [key, item] = e.detail;\n\n if (isFunction(local.onChange)) {\n local.onChange(key, item);\n }\n if (local.value === void 0) {\n setValue(Array.isArray(key) ? key : [key]);\n }\n if (!local.multiple) {\n openChange(false);\n }\n }\n function menuOpenKeysChange(e: CustomEvent<(string | number)[]>) {\n setMenuOpenKeys(e.detail);\n }\n\n createEffect(() => {\n if (local.value !== void 0 && local.value !== null) {\n setValue(Array.isArray(local.value) ? local.value : [local.value]);\n } else {\n setValue([]);\n }\n });\n createEffect(() => {\n if (local.open !== void 0 && untrack(open) !== local.open) {\n setOpen(local.open);\n }\n });\n\n return (\n <Popover\n popupClass={local.popupClass}\n popupCss={local.popupCss}\n open={open()}\n onOpenChange={openChange}\n content={\n <div ref={portalRef} class=\"container\">\n <Show when={local.items?.length} fallback={<Empty style={{ width: '100%' }} />}>\n <n-menu\n items={local.items}\n default-value={local.defaultValue}\n multiple={local.multiple as true}\n field-names={local.fieldNames}\n toggle={local.toggle}\n disabled={other.disabled}\n value={value()}\n onChange={change}\n open-keys={menuOpenKeys()}\n onOpenChange={menuOpenKeysChange}\n css={local.menuCss}\n />\n </Show>\n </div>\n }\n {...other}\n />\n );\n}\n\nexport const defaultProps = {\n ...popoverProps,\n fieldNames: void 0,\n toggle: void 0,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n multiple: void 0,\n disabled: void 0,\n type: void 0,\n onOpenChange: void 0,\n openKeys: void 0,\n menuCss: void 0,\n};\n\ncustomElement<DropdownProps>(\n 'n-dropdown',\n {\n ...defaultProps,\n items: [],\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n items: el.items,\n onChange(key, item) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n children: [...el.childNodes.values()],\n } as DropdownProps,\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['popupCss', 'css', 'items', 'fieldNames', 'content']);\n });\n return (\n <>\n <style textContent={inline} />\n <Dropdown {...props} />\n </>\n );\n },\n);\nexport default Dropdown;\n"],"names":["defaultProps","Dropdown","props","portalRef","local","other","splitProps","value","setValue","createSignal","open","setOpen","menuOpenKeys","setMenuOpenKeys","openChange","next","isFunction","onOpenChange","change","e","key","item","detail","onChange","Array","isArray","multiple","menuOpenKeysChange","createEffect","untrack","Popover","popupClass","popupCss","Show","items","length","Empty","width","defaultValue","fieldNames","toggle","disabled","menuCss","popoverProps","type","openKeys","customElement","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","children","childNodes","values","clearAttribute","inline"],"mappings":"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"}
|