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.
@@ -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;
@@ -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 l}from"solid-js/web";import{effect as r}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let p=t("<n-menu>",!0,!1),d=t('<div class="container">'),u=t("<style>");import{createEffect as v,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[u,f]=c(e,["popupClass","popupCss","value","defaultValue","onChange","open","onOpenChange","fieldNames","items","multiple","toggle"]),[$,_]=m([]),[y,j]=m(null),[O,N]=m([]);function E(e){C(u.onOpenChange)&&u.onOpenChange(e),void 0===u.open&&j(e)}function P(e){let[o,t]=e.detail;C(u.onChange)&&u.onChange(o,t),void 0===u.value&&_(Array.isArray(o)?o:[o]),u.multiple||E(!1)}function A(e){N(e.detail)}return v(()=>{void 0!==u.value&&null!==u.value?_(Array.isArray(u.value)?u.value:[u.value]):_([])}),v(()=>{void 0!==u.open&&h(y)!==u.open&&j(u.open)}),s(w,n({get popupClass(){return u.popupClass},get popupCss(){return u.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,s(g,{get when(){var v;return null==(v=u.items)?void 0:v.length},get fallback(){return s(b,{style:{width:"100%"}})},get children(){let e=p();return a(e,"openchange",A),a(e,"change",P),e._$owner=l(),r(o=>{let t=u.items,n=u.defaultValue,i=u.multiple,l=u.fieldNames,r=u.toggle,s=f.disabled,a=O();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),l!==o._v$4&&(e.fieldNames=o._v$4=l),r!==o._v$5&&(e.toggle=o._v$5=r),s!==o._v$6&&(e.disabled=o._v$6=s),a!==o._v$7&&(e.openKeys=o._v$7=a),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}),r(()=>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});$("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 v(()=>{_(t,["popupCss","css","items","fieldNames","content"])}),[(()=>{let e=u();return e.textContent=j,e})(),s(O,n)]});export default O;
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;
@@ -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":"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"}
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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"}
@@ -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;
@@ -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 m}});const t=require("solid-js/web"),n=require("solid-js"),o=p(require("@moneko/common/lib/isFunction")),r=require("solid-element"),i=require("../basic-config"),l=p(require("../empty")),a=d(require("../popover")),u=require("../theme");function p(e){return e&&e.__esModule?e:{default:e}}function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(s=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=s(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 c=(0,t.template)("<n-menu>",!0,!1),v=(0,t.template)('<div class="container">'),f=(0,t.template)("<style>");function g(e){let r;let[i,u]=(0,n.splitProps)(e,["popupClass","popupCss","value","defaultValue","onChange","open","onOpenChange","fieldNames","items","multiple","toggle"]),[p,s]=(0,n.createSignal)([]),[d,f]=(0,n.createSignal)(null),[g,m]=(0,n.createSignal)([]);function _(e){(0,o.default)(i.onOpenChange)&&i.onOpenChange(e),void 0===i.open&&f(e)}function h(e){let[t,n]=e.detail;(0,o.default)(i.onChange)&&i.onChange(t,n),void 0===i.value&&s(Array.isArray(t)?t:[t]),i.multiple||_(!1)}function C(e){m(e.detail)}return(0,n.createEffect)(()=>{void 0!==i.value&&null!==i.value?s(Array.isArray(i.value)?i.value:[i.value]):s([])}),(0,n.createEffect)(()=>{void 0!==i.open&&(0,n.untrack)(d)!==i.open&&f(i.open)}),(0,t.createComponent)(a.default,(0,t.mergeProps)({get popupClass(){return i.popupClass},get popupCss(){return i.popupCss},get open(){return d()},onOpenChange:_,get content(){return(()=>{let e=v(),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=c();return(0,t.addEventListener)(e,"openchange",C),(0,t.addEventListener)(e,"change",h),e._$owner=(0,t.getOwner)(),(0,t.effect)(t=>{let n=i.items,o=i.defaultValue,r=i.multiple,l=i.fieldNames,a=i.toggle,p=u.disabled,s=g();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),a!==t._v$5&&(e.toggle=t._v$5=a),p!==t._v$6&&(e.disabled=t._v$6=p),s!==t._v$7&&(e.openKeys=t._v$7=s),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}),(0,t.effect)(()=>e.value=p()),e}})),e})()}},u))}const m={...a.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};(0,r.customElement)("n-dropdown",{...m,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=u.inline,e})(),(0,t.createComponent)(g,l)]});const _=g;
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":"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"}
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neko-ui",
3
- "version": "2.9.8-beta.3",
3
+ "version": "2.9.8-beta.4",
4
4
  "description": "WebComponents UI Libraries",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",