neko-ui 2.5.0 → 2.5.2
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/README.md +2 -0
- package/es/basic-config/index.js +1 -1
- package/es/basic-config/index.js.map +1 -1
- package/es/code/index.d.ts +1 -0
- package/es/code/index.js +2 -2
- package/es/code/index.js.map +1 -1
- package/es/code/worker.js +1 -1
- package/es/code/worker.js.map +1 -1
- package/es/date-picker/index.js +1 -1
- package/es/date-picker/index.js.map +1 -1
- package/es/from-schema/index.js.map +1 -1
- package/es/input/index.d.ts +6 -1
- package/es/input/index.js +1 -1
- package/es/input/index.js.map +1 -1
- package/es/input/style.js +2 -1
- package/es/input/style.js.map +1 -1
- package/es/popover/index.js +2 -2
- package/es/popover/index.js.map +1 -1
- package/es/switch/index.d.ts +1 -1
- package/es/switch/index.js.map +1 -1
- package/es/table/index.js +1 -1
- package/es/table/index.js.map +1 -1
- package/es/theme/index.js +1 -1
- package/es/theme/index.js.map +1 -1
- package/lib/basic-config/index.js +1 -1
- package/lib/basic-config/index.js.map +1 -1
- package/lib/code/index.d.ts +1 -0
- package/lib/code/index.js +2 -2
- package/lib/code/index.js.map +1 -1
- package/lib/code/worker.js +1 -1
- package/lib/code/worker.js.map +1 -1
- package/lib/color-palette/index.js +1 -1
- package/lib/color-palette/index.js.map +1 -1
- package/lib/cron/style.js +1 -1
- package/lib/cron/style.js.map +1 -1
- package/lib/date-picker/index.js +1 -1
- package/lib/date-picker/index.js.map +1 -1
- package/lib/date-picker/month.js +1 -1
- package/lib/date-picker/month.js.map +1 -1
- package/lib/date-picker/time.js +1 -1
- package/lib/date-picker/time.js.map +1 -1
- package/lib/dropdown/index.js +1 -1
- package/lib/dropdown/index.js.map +1 -1
- package/lib/from-schema/index.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/input/index.d.ts +6 -1
- package/lib/input/index.js +1 -1
- package/lib/input/index.js.map +1 -1
- package/lib/input/style.js +2 -1
- package/lib/input/style.js.map +1 -1
- package/lib/popover/index.js +2 -2
- package/lib/popover/index.js.map +1 -1
- package/lib/switch/index.d.ts +1 -1
- package/lib/switch/index.js.map +1 -1
- package/lib/table/index.js +1 -1
- package/lib/table/index.js.map +1 -1
- package/lib/tabs/style.js +1 -1
- package/lib/tabs/style.js.map +1 -1
- package/lib/theme/index.js +2 -2
- package/lib/theme/index.js.map +1 -1
- package/package.json +8 -4
- package/umd/index.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/date-picker/month.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport { cx } from '@moneko/css';\nimport dayjs from './dayjs';\n\ntype MonthPanelProps = { current: dayjs.Dayjs; onChange(next: dayjs.Dayjs): void };\n\nexport const months = dayjs.monthsShort();\n\nfunction MonthPanel(props: MonthPanelProps) {\n return (\n <For each={months}>\n {(m, i) => {\n const isActive = createMemo(() => {\n return props.current.get('month') === i();\n });\n\n function onChange() {\n props.onChange(props.current.set('month', i()));\n }\n\n return (\n <n-button\n type=\"primary\"\n flat={true}\n class={cx('date-picker-month', isActive() && 'date-active')}\n tag={isActive() ? 'strong' : 'button'}\n onClick={onChange}\n >\n {m}\n </n-button>\n );\n }}\n </For>\n );\n}\n\nexport default MonthPanel;\n"],"names":["months","dayjs","monthsShort","props","For","m","i","isActive","createMemo","current","get","onChange","set","cx"],"mappings":"+
|
|
1
|
+
{"version":3,"sources":["../../components/date-picker/month.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport { cx } from '@moneko/css';\nimport dayjs from './dayjs';\n\ntype MonthPanelProps = { current: dayjs.Dayjs; onChange(next: dayjs.Dayjs): void };\n\nexport const months = dayjs.monthsShort();\n\nfunction MonthPanel(props: MonthPanelProps) {\n return (\n <For each={months}>\n {(m, i) => {\n const isActive = createMemo(() => {\n return props.current.get('month') === i();\n });\n\n function onChange() {\n props.onChange(props.current.set('month', i()));\n }\n\n return (\n <n-button\n type=\"primary\"\n flat={true}\n class={cx('date-picker-month', isActive() && 'date-active')}\n tag={isActive() ? 'strong' : 'button'}\n onClick={onChange}\n >\n {m}\n </n-button>\n );\n }}\n </For>\n );\n}\n\nexport default MonthPanel;\n"],"names":["months","dayjs","monthsShort","props","For","m","i","isActive","createMemo","current","get","onChange","set","cx"],"mappings":"+JAoCA,OAA0B,mBAA1B,GA9BaA,MAAM,mBAANA,oGANmB,sBACb,0CACD,6EAILA,EAASC,SAAK,CAACC,WAAW,GA8BvC,EA5BA,SAAoBC,CAAsB,EACxC,4BACGC,KAAG,OAAOJ,WACR,CAACK,EAAGC,KACH,IAAMC,EAAWC,GAAAA,YAAU,EAAC,IACnBL,EAAMM,OAAO,CAACC,GAAG,CAAC,WAAaJ,KAGxC,SAASK,IACPR,EAAMQ,QAAQ,CAACR,EAAMM,OAAO,CAACG,GAAG,CAAC,QAASN,KAC5C,CAEA,6DAMaK,aAHH,CAAA,4CAKLN,0BAJMQ,GAAAA,IAAE,EAAC,oBAAqBN,KAAc,iBACxCA,IAAa,SAAW,qHAMnC,GAGN"}
|
package/lib/date-picker/time.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{default:function(){return s},hours:function(){return o},minutes:function(){return i}});const e=require("solid-js/web"),t=require("solid-js"),n=/*#__PURE__*/(0,e.template)("<n-menu>",!0,!1),r=/*#__PURE__*/(0,e.template)('<section class="time-picker"><section class="time-picker-header"><n-button><strong></strong></n-button></section><section class="time-picker-items">',!0,!1),o=Array.from({length:24},(e,t)=>({label:t<10?`0${t}`:t,value:t})),i=Array.from({length:60},(e,t)=>({label:t<10?`0${t}`:t,value:t})),s=function(s){let[l,u]=(0,t.createSignal)("0px");return(0,t.createEffect)(()=>{u(`${s.datePicker?.offsetHeight}px`)}),(()=>{let u=r(),c=u.firstChild,a=c.firstChild,h=a.firstChild,f=c.nextSibling;return a.ghost=!0,a.flat=!0,a._$owner=(0,e.getOwner)(),(0,e.insert)(h,()=>s.current.format("HH:mm:ss")),(0,e.insert)(f,(0,e.createComponent)(t.Show,{get when(){return s.showHour},get children(){let t=n();return t.addEventListener("change",e=>{let t=s.current.set("hour",e.detail[0]);s.onChange(t)}),t.items=o,t._$owner=(0,e.getOwner)(),(0,e.effect)(()=>t.value=s.current.get("hour")),t}}),null),(0,e.insert)(f,(0,e.createComponent)(t.Show,{get when(){return s.showMinute},get children(){let t=n();return t.addEventListener("change",e=>{let t=s.current.set("minute",e.detail[0]);s.onChange(t)}),t.items=i,t._$owner=(0,e.getOwner)(),(0,e.effect)(()=>t.value=s.current.get("minute")),t}}),null),(0,e.insert)(f,(0,e.createComponent)(t.Show,{get when(){return s.showSecond},get children(){let t=n();return t.addEventListener("change",e=>{let t=s.current.set("second",e.detail[0]);s.onChange(t)}),t.items=i,t._$owner=(0,e.getOwner)(),(0,e.effect)(()=>t.value=s.current.get("second")),t}}),null),(0,e.effect)(()=>null!=l()?u.style.setProperty("max-block-size",l()):u.style.removeProperty("max-block-size")),u})()};
|
|
2
2
|
//# sourceMappingURL=time.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/date-picker/time.tsx"],"sourcesContent":["import { Show, createEffect, createSignal } from 'solid-js';\nimport dayjs from './dayjs';\n\ntype TimePickerProps = {\n current: dayjs.Dayjs;\n datePicker: HTMLDivElement | undefined;\n onChange(next: dayjs.Dayjs): void;\n showHour?: boolean;\n showMinute?: boolean;\n showSecond?: boolean;\n};\n\nexport const hours = Array.from({ length: 24 }, (_, i) => ({\n label: i < 10 ? `0${i}` : i,\n value: i,\n}));\nexport const minutes = Array.from({ length: 60 }, (_, i) => ({\n label: i < 10 ? `0${i}` : i,\n value: i,\n}));\n\nfunction TimePicker(props: TimePickerProps) {\n const [hei, setHei] = createSignal('0px');\n\n createEffect(() => {\n setHei(`${props.datePicker?.offsetHeight}px`);\n });\n\n return (\n <section class=\"time-picker\" style={{ 'max-block-size': hei() }}>\n <section class=\"time-picker-header\">\n <n-button ghost={true} flat={true}>\n <strong>{props.current.format('HH:mm:ss')}</strong>\n </n-button>\n </section>\n <section class=\"time-picker-items\">\n <Show when={props.showHour}>\n <n-menu\n items={hours}\n value={props.current.get('hour')}\n onChange={(e) => {\n const next = props.current.set('hour', e.detail[0] as number);\n\n props.onChange(next);\n }}\n />\n </Show>\n <Show when={props.showMinute}>\n <n-menu\n items={minutes}\n value={props.current.get('minute')}\n onChange={(e) => {\n const next = props.current.set('minute', e.detail[0] as number);\n\n props.onChange(next);\n }}\n />\n </Show>\n <Show when={props.showSecond}>\n <n-menu\n items={minutes}\n value={props.current.get('second')}\n onChange={(e) => {\n const next = props.current.set('second', e.detail[0] as number);\n\n props.onChange(next);\n }}\n />\n </Show>\n </section>\n </section>\n );\n}\n\nexport default TimePicker;\n"],"names":["hours","minutes","Array","from","length","_","i","label","value","props","hei","setHei","createSignal","createEffect","datePicker","offsetHeight","current","format","Show","showHour","e","next","set","detail","onChange","get","showMinute","showSecond"],"mappings":"+
|
|
1
|
+
{"version":3,"sources":["../../components/date-picker/time.tsx"],"sourcesContent":["import { Show, createEffect, createSignal } from 'solid-js';\nimport dayjs from './dayjs';\n\ntype TimePickerProps = {\n current: dayjs.Dayjs;\n datePicker: HTMLDivElement | undefined;\n onChange(next: dayjs.Dayjs): void;\n showHour?: boolean;\n showMinute?: boolean;\n showSecond?: boolean;\n};\n\nexport const hours = Array.from({ length: 24 }, (_, i) => ({\n label: i < 10 ? `0${i}` : i,\n value: i,\n}));\nexport const minutes = Array.from({ length: 60 }, (_, i) => ({\n label: i < 10 ? `0${i}` : i,\n value: i,\n}));\n\nfunction TimePicker(props: TimePickerProps) {\n const [hei, setHei] = createSignal('0px');\n\n createEffect(() => {\n setHei(`${props.datePicker?.offsetHeight}px`);\n });\n\n return (\n <section class=\"time-picker\" style={{ 'max-block-size': hei() }}>\n <section class=\"time-picker-header\">\n <n-button ghost={true} flat={true}>\n <strong>{props.current.format('HH:mm:ss')}</strong>\n </n-button>\n </section>\n <section class=\"time-picker-items\">\n <Show when={props.showHour}>\n <n-menu\n items={hours}\n value={props.current.get('hour')}\n onChange={(e) => {\n const next = props.current.set('hour', e.detail[0] as number);\n\n props.onChange(next);\n }}\n />\n </Show>\n <Show when={props.showMinute}>\n <n-menu\n items={minutes}\n value={props.current.get('minute')}\n onChange={(e) => {\n const next = props.current.set('minute', e.detail[0] as number);\n\n props.onChange(next);\n }}\n />\n </Show>\n <Show when={props.showSecond}>\n <n-menu\n items={minutes}\n value={props.current.get('second')}\n onChange={(e) => {\n const next = props.current.set('second', e.detail[0] as number);\n\n props.onChange(next);\n }}\n />\n </Show>\n </section>\n </section>\n );\n}\n\nexport default TimePicker;\n"],"names":["hours","minutes","Array","from","length","_","i","label","value","props","hei","setHei","createSignal","createEffect","datePicker","offsetHeight","current","format","Show","showHour","e","next","set","detail","onChange","get","showMinute","showSecond"],"mappings":"+JA0EA,OAA0B,mBAA1B,GA9DaA,KAAK,mBAALA,GAIAC,OAAO,mBAAPA,+CAhBoC,wPAYpCD,EAAQE,MAAMC,IAAI,CAAC,CAAEC,OAAQ,EAAG,EAAG,CAACC,EAAGC,IAAO,CAAA,CACzDC,MAAOD,EAAI,GAAK,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAGA,EAC1BE,MAAOF,CACT,CAAA,GACaL,EAAUC,MAAMC,IAAI,CAAC,CAAEC,OAAQ,EAAG,EAAG,CAACC,EAAGC,IAAO,CAAA,CAC3DC,MAAOD,EAAI,GAAK,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAGA,EAC1BE,MAAOF,CACT,CAAA,GAuDA,EArDA,SAAoBG,CAAsB,EACxC,GAAM,CAACC,EAAKC,EAAO,CAAGC,GAAAA,cAAY,EAAC,OAMnC,MAJAC,GAAAA,cAAY,EAAC,KACXF,EAAO,CAAC,EAAEF,EAAMK,UAAU,EAAEC,aAAa,EAAE,CAAC,CAC9C,+FAKuB,CAAA,SAAY,CAAA,gDAClBN,EAAMO,OAAO,CAACC,MAAM,CAAC,kDAI/BC,MAAI,oBAAOT,EAAMU,QAAQ,8DAIZ,AAACC,IACT,IAAMC,EAAOZ,EAAMO,OAAO,CAACM,GAAG,CAAC,OAAQF,EAAEG,MAAM,CAAC,EAAE,EAElDd,EAAMe,QAAQ,CAACH,EACjB,WANOrB,sDACAS,EAAMO,OAAO,CAACS,GAAG,CAAC,yDAQ5BP,MAAI,oBAAOT,EAAMiB,UAAU,8DAId,AAACN,IACT,IAAMC,EAAOZ,EAAMO,OAAO,CAACM,GAAG,CAAC,SAAUF,EAAEG,MAAM,CAAC,EAAE,EAEpDd,EAAMe,QAAQ,CAACH,EACjB,WANOpB,sDACAQ,EAAMO,OAAO,CAACS,GAAG,CAAC,2DAQ5BP,MAAI,oBAAOT,EAAMkB,UAAU,8DAId,AAACP,IACT,IAAMC,EAAOZ,EAAMO,OAAO,CAACM,GAAG,CAAC,SAAUF,EAAEG,MAAM,CAAC,EAAE,EAEpDd,EAAMe,QAAQ,CAACH,EACjB,WANOpB,sDACAQ,EAAMO,OAAO,CAACS,GAAG,CAAC,6CAhCuBf,yCAAAA,oDA2C5D"}
|
package/lib/dropdown/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{default:function(){return v},defaultProps:function(){return p}});const e=require("@swc/helpers/_/_interop_require_default"),t=require("@swc/helpers/_/_interop_require_wildcard"),n=require("solid-js/web"),o=require("solid-js"),r=/*#__PURE__*/e._(require("@moneko/common/lib/isFunction")),i=require("solid-element"),l=/*#__PURE__*/e._(require("../empty"));require("../menu");const a=/*#__PURE__*/t._(require("../popover")),u=/*#__PURE__*/(0,n.template)("<n-menu>",!0,!1),s=/*#__PURE__*/(0,n.template)('<div class="container">');function d(e){let t;let[i,d]=(0,o.splitProps)(e,["popupClass","popupCss","value","defaultValue","onChange","open","onOpenChange","fieldNames","items","multiple","toggle"]),[p,v]=(0,o.createSignal)([]),[c,m]=(0,o.createSignal)(null),[f,g]=(0,o.createSignal)([]);function _(e){(0,r.default)(i.onOpenChange)&&i.onOpenChange(e),void 0===i.open&&m(e)}function h(e){let[t,n]=e.detail;(0,r.default)(i.onChange)&&i.onChange(t,n),void 0===i.value&&v(Array.isArray(t)?t:[t]),i.multiple||_(!1)}function C(e){g(e.detail)}return(0,o.createEffect)(()=>{void 0!==i.value&&null!==i.value?v(Array.isArray(i.value)?i.value:[i.value]):v([])}),(0,o.createEffect)(()=>{void 0!==i.open&&(0,o.untrack)(c)!==i.open&&m(i.open)}),(0,n.createComponent)(a.default,(0,n.mergeProps)({get popupClass(){return i.popupClass},get popupCss(){return i.popupCss},get open(){return c()},onOpenChange:_,get content(){return(()=>{let e=s(),r=t;return"function"==typeof r?(0,n.use)(r,e):t=e,(0,n.insert)(e,(0,n.createComponent)(o.Show,{get when(){return i.items?.length},get fallback(){return(0,n.createComponent)(l.default,{style:{width:"100%"}})},get children(){let e=u();return(0,n.addEventListener)(e,"openchange",C),(0,n.addEventListener)(e,"change",h),e._$owner=(0,n.getOwner)(),(0,n.effect)(t=>{let n=i.items,o=i.defaultValue,r=i.multiple,l=i.fieldNames,a=i.toggle,u=d.disabled,s=f();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),u!==t._v$6&&(e.disabled=t._v$6=u),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,n.effect)(()=>e.value=p()),e}})),e})()}},d))}const p={...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,i.customElement)("n-dropdown",{...p,items:[]},(e,t)=>{let n=t.element,r=(0,o.mergeProps)({items:n.items,onChange(e,t){n.dispatchEvent(new CustomEvent("change",{detail:[e,t]}))},onOpenChange(e){n.dispatchEvent(new CustomEvent("openchange",{detail:e}))},children:[...n.childNodes.values()]},e);return(0,o.createEffect)(()=>{n.removeAttribute("items"),n.removeAttribute("field-names"),n.removeAttribute("css")}),(0,o.createComponent)(d,r)});const v=d;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/dropdown/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { customElement } from 'solid-element';\nimport Empty from '../empty';\nimport '../menu';\nimport Popover, { defaultProps as popoverProps } from '../popover';\nimport type { CustomElement, MenuMultipleProps, MenuOption, MenuProps, PopoverProps } from '..';\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 el.removeAttribute('items');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return createComponent(Dropdown, props);\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","removeAttribute","createComponent"],"mappings":"+
|
|
1
|
+
{"version":3,"sources":["../../components/dropdown/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { customElement } from 'solid-element';\nimport Empty from '../empty';\nimport '../menu';\nimport Popover, { defaultProps as popoverProps } from '../popover';\nimport type { CustomElement, MenuMultipleProps, MenuOption, MenuProps, PopoverProps } from '..';\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 el.removeAttribute('items');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return createComponent(Dropdown, props);\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","removeAttribute","createComponent"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/from-schema/index.ts"],"sourcesContent":["import { type TreeData } from '../tree';\n\nenum Type {\n string = 'string',\n number = 'number',\n integer = 'integer',\n boolean = 'boolean',\n object = 'object',\n array = 'array',\n}\ninterface BaseSchema {\n type?: keyof typeof Type;\n name?: string;\n title?: string;\n items?: never;\n [key: string]: Any;\n}\ninterface ArraySchema extends Omit<BaseSchema, 'type' | 'items'> {\n type: 'array';\n items: Schema;\n properties?: Record<string, Schema>;\n}\n\ninterface ObjectSchema extends Omit<BaseSchema, 'type'> {\n type?: Exclude<keyof typeof Type, 'array'>;\n properties?: Record<string, Schema>;\n}\n\nexport type Schema = ObjectSchema | ArraySchema;\n\nfunction fromSchema(schema: Schema, pid?: string): TreeData<string>[] {\n const treeData: TreeData<string>[] = [];\n const { properties } = schema;\n\n for (const k in properties) {\n if (Object.prototype.hasOwnProperty.call(properties, k)) {\n const name = k as keyof typeof properties;\n const { properties: _properties, items, type = 'string', ...item } = properties[name];\n\n const node: TreeData<string> = {\n ...item,\n name: name,\n type,\n subTitle: type,\n key: `${pid ? `${pid}.` : ''}${name}`,\n };\n\n if (type === 'object') {\n node.children = fromSchema({ properties: _properties }, node.key);\n } else if (type === 'array') {\n node.children = fromSchema(\n {\n properties: {\n items: {\n ...(items as Schema),\n title: 'items',\n },\n },\n },\n node.key,\n );\n }\n treeData.push(node);\n }\n }\n\n return treeData;\n}\n\nexport default fromSchema;\n"],"names":["Type","
|
|
1
|
+
{"version":3,"sources":["../../components/from-schema/index.ts"],"sourcesContent":["import { type TreeData } from '../tree';\n\nenum Type {\n string = 'string',\n number = 'number',\n integer = 'integer',\n boolean = 'boolean',\n object = 'object',\n array = 'array',\n}\ninterface BaseSchema {\n type?: keyof typeof Type;\n name?: string;\n title?: string;\n items?: never;\n [key: string]: Any;\n}\ninterface ArraySchema extends Omit<BaseSchema, 'type' | 'items'> {\n type: 'array';\n items: Schema;\n properties?: Record<string, Schema>;\n}\n\ninterface ObjectSchema extends Omit<BaseSchema, 'type'> {\n type?: Exclude<keyof typeof Type, 'array'>;\n properties?: Record<string, Schema>;\n}\n\nexport type Schema = ObjectSchema | ArraySchema;\n\nfunction fromSchema(schema: Schema, pid?: string): TreeData<string>[] {\n const treeData: TreeData<string>[] = [];\n const { properties } = schema;\n\n for (const k in properties) {\n if (Object.prototype.hasOwnProperty.call(properties, k)) {\n const name = k as keyof typeof properties;\n const { properties: _properties, items, type = 'string', ...item } = properties[name];\n\n const node: TreeData<string> = {\n ...item,\n name: name,\n type,\n subTitle: type,\n key: `${pid ? `${pid}.` : ''}${name}`,\n };\n\n if (type === 'object') {\n node.children = fromSchema({ properties: _properties }, node.key);\n } else if (type === 'array') {\n node.children = fromSchema(\n {\n properties: {\n items: {\n ...(items as Schema),\n title: 'items',\n },\n },\n },\n node.key,\n );\n }\n treeData.push(node);\n }\n }\n\n return treeData;\n}\n\nexport default fromSchema;\n"],"names":["Type","fromSchema","schema","pid","treeData","properties","k","Object","prototype","hasOwnProperty","call","_properties","items","type","item","node","name","subTitle","key","children","title","push"],"mappings":"mBAEKA,uFAmEL,+CAAA,MAnEKA,EAAAA,IAAAA,yHAmEL,EAvCA,SAASC,EAAWC,CAAc,CAAEC,CAAY,EAC9C,IAAMC,EAA+B,EAAE,CACjC,CAAEC,WAAAA,CAAU,CAAE,CAAGH,EAEvB,IAAK,IAAMI,KAAKD,EACd,GAAIE,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACL,EAAYC,GAAI,CAEvD,GAAM,CAAED,WAAYM,CAAW,CAAEC,MAAAA,CAAK,CAAEC,KAAAA,EAAO,QAAQ,CAAE,GAAGC,EAAM,CAAGT,CAAU,CADlEC,EACwE,CAE/ES,EAAyB,CAC7B,GAAGD,CAAI,CACPE,KALWV,EAMXO,KAAAA,EACAI,SAAUJ,EACVK,IAAK,CAAC,EAAEf,EAAM,CAAC,EAAEA,EAAI,CAAC,CAAC,CAAG,GAAG,EARlBG,EAQyB,CAAC,AACvC,CAEIO,AAAS,CAAA,WAATA,EACFE,EAAKI,QAAQ,CAAGlB,EAAW,CAAEI,WAAYM,CAAY,EAAGI,EAAKG,GAAG,EAC9C,UAATL,GACTE,CAAAA,EAAKI,QAAQ,CAAGlB,EACd,CACEI,WAAY,CACVO,MAAO,CACL,GAAIA,CAAK,CACTQ,MAAO,OACT,CACF,CACF,EACAL,EAAKG,GAAG,CACV,EAEFd,EAASiB,IAAI,CAACN,EAChB,CAGF,OAAOX,CACT"}
|
package/lib/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,r){for(var t in r)Object.defineProperty(e,t,{enumerable:!0,get:r[t]})}(exports,{Avatar:function(){return t.default},AvatarGroup:function(){return u.default},BackTop:function(){return n.default},
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,r){for(var t in r)Object.defineProperty(e,t,{enumerable:!0,get:r[t]})}(exports,{Avatar:function(){return t.default},AvatarGroup:function(){return u.default},BackTop:function(){return n.default},Button:function(){return o.default},CaptureScreen:function(){return f.default},Carousel:function(){return a.default},Checkbox:function(){return c.default},Code:function(){return l.default},ColorPalette:function(){return d.default},ColorPicker:function(){return _.default},Cron:function(){return q.default},DatePicker:function(){return p.default},Dropdown:function(){return s.default},Empty:function(){return m.default},FieldName:function(){return i.FieldName},HighlightText:function(){return S.default},Img:function(){return b.default},Input:function(){return k.default},InputNumber:function(){return w.default},Md:function(){return C.default},Menu:function(){return v.default},Pagination:function(){return y.default},Popover:function(){return T.default},Provider:function(){return G.default},Radio:function(){return P.default},Segmented:function(){return x.default},Select:function(){return E.default},Size:function(){return i.Size},Skeleton:function(){return M.default},Spin:function(){return O.default},Status:function(){return i.Status},Switch:function(){return j.default},Table:function(){return D.default},Tabs:function(){return I.default},Tag:function(){return N.default},Tree:function(){return A.default},Typography:function(){return B.default},customElement:function(){return H.customElement},dayjs:function(){return F.default},fromSchema:function(){return h.default},generateTheme:function(){return z.generateTheme},getCurrentElement:function(){return H.getCurrentElement},getOptions:function(){return g.default},hot:function(){return H.hot},noShadowDOM:function(){return H.noShadowDOM},theme:function(){return z.default},toneColor:function(){return z.toneColor},withSolid:function(){return H.withSolid}});const e=require("@swc/helpers/_/_interop_require_default"),r=require("@swc/helpers/_/_interop_require_wildcard"),t=/*#__PURE__*/e._(require("./avatar")),u=/*#__PURE__*/e._(require("./avatar/group")),n=/*#__PURE__*/e._(require("./back-top")),i=require("./basic-config"),o=/*#__PURE__*/e._(require("./button")),f=/*#__PURE__*/e._(require("./capture-screen")),a=/*#__PURE__*/e._(require("./carousel")),c=/*#__PURE__*/e._(require("./checkbox")),l=/*#__PURE__*/e._(require("./code")),d=/*#__PURE__*/e._(require("./color-palette")),_=/*#__PURE__*/e._(require("./color-picker")),q=/*#__PURE__*/e._(require("./cron")),p=/*#__PURE__*/e._(require("./date-picker")),s=/*#__PURE__*/e._(require("./dropdown")),m=/*#__PURE__*/e._(require("./empty")),h=/*#__PURE__*/e._(require("./from-schema")),g=/*#__PURE__*/e._(require("./get-options")),S=/*#__PURE__*/e._(require("./highlight-text")),b=/*#__PURE__*/e._(require("./img")),k=/*#__PURE__*/e._(require("./input")),w=/*#__PURE__*/e._(require("./input-number")),C=/*#__PURE__*/e._(require("./md")),v=/*#__PURE__*/e._(require("./menu")),y=/*#__PURE__*/e._(require("./pagination")),T=/*#__PURE__*/e._(require("./popover")),P=/*#__PURE__*/e._(require("./radio")),x=/*#__PURE__*/e._(require("./segmented")),E=/*#__PURE__*/e._(require("./select")),M=/*#__PURE__*/e._(require("./skeleton")),O=/*#__PURE__*/e._(require("./spin")),j=/*#__PURE__*/e._(require("./switch")),D=/*#__PURE__*/e._(require("./table")),I=/*#__PURE__*/e._(require("./tabs")),N=/*#__PURE__*/e._(require("./tag")),z=/*#__PURE__*/r._(require("./theme")),A=/*#__PURE__*/e._(require("./tree")),B=/*#__PURE__*/e._(require("./typography")),F=/*#__PURE__*/e._(require("./date-picker/dayjs")),G=/*#__PURE__*/e._(require("./provider")),H=require("solid-element");
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../components/index.ts"],"sourcesContent":["export { default as Avatar, type AvatarElement, type AvatarProps } from './avatar';\nexport {\n default as AvatarGroup,\n type AvatarGroupElement,\n type AvatarGroupProps,\n} from './avatar/group';\nexport { default as BackTop, type BackTopElement, type BackTopProps } from './back-top';\nexport { type BaseOption, type BasicConfig, FieldName, Size, Status } from './basic-config';\nexport { default as Button, type ButtonElement, type ButtonProps } from './button';\nexport {\n default as CaptureScreen,\n type CaptureScreenElement,\n type CaptureScreenProps,\n} from './capture-screen';\nexport { default as Carousel, type CarouselElement, type CarouselProps } from './carousel';\nexport {\n default as Checkbox,\n type CheckboxBoolElement,\n type CheckboxBoolProps,\n type CheckboxGroupElement,\n type CheckboxGroupProps,\n} from './checkbox';\nexport { default as Code, type CodeElement, type CodeProps } from './code';\nexport {\n default as ColorPalette,\n type ColorPaletteElement,\n type ColorPaletteProps,\n} from './color-palette';\nexport {\n default as ColorPicker,\n type ColorPickerElement,\n type ColorPickerProps,\n} from './color-picker';\nexport { default as Cron, type CronElement, type CronProps } from './cron';\nexport { default as DatePicker, type DatePickerProps, type DatePickerElement } from './date-picker';\nexport {\n default as Dropdown,\n type DropdownElement,\n type DropdownMultipleElement,\n type DropdownMultipleProps,\n type DropdownProps,\n} from './dropdown';\nexport { default as Empty, type EmptyElement, type EmptyProps } from './empty';\nexport { default as fromSchema } from './from-schema';\nexport { default as getOptions } from './get-options';\nexport {\n default as HighlightText,\n type HighlightTextElement,\n type HighlightTextProps,\n} from './highlight-text';\nexport { default as Img, type ImgElement, type ImgProps } from './img';\nexport { default as Input, type InputElement, type InputProps } from './input';\nexport {\n default as InputNumber,\n type InputNumberElement,\n type InputNumberProps,\n} from './input-number';\nexport { default as Md, type MdElement, type MdProps } from './md';\nexport {\n default as Menu,\n type MenuElement,\n type MenuMultipleElement,\n type MenuMultipleProps,\n type MenuOption,\n type MenuProps,\n} from './menu';\nexport { default as Pagination, type PaginationProps, type PaginationElement } from './pagination';\nexport { default as Popover, type PopoverElement, type PopoverProps } from './popover';\nexport { default as Radio, type RadioElement, type RadioOption, type RadioProps } from './radio';\nexport { default as Segmented, type SegmentedElement, type SegmentedProps } from './segmented';\nexport {\n default as Select,\n type SelectElement,\n type SelectMultipleElement,\n type SelectMultipleProps,\n type SelectProps,\n} from './select';\nexport { default as Skeleton, type SkeletonElement, type SkeletonProps } from './skeleton';\nexport { default as Spin, type SpinElement, type SpinProps } from './spin';\nexport { default as Switch, type SwitchElement, type SwitchProps } from './switch';\nexport { default as Table, type TableElement, type TableProps } from './table';\nexport { default as Tabs, type TabOption, type TabsElement, type TabsProps } from './tabs';\nexport { default as Tag, type TagElement, type TagProps } from './tag';\nexport {\n default as theme,\n type ColorScheme,\n type ThemeOption,\n generateTheme,\n toneColor,\n} from './theme';\nexport {\n default as Tree,\n type TreeElement,\n type TreeMultipleElement,\n type TreeMultipleProps,\n type TreeMultipleSchemaElement,\n type TreeMultipleSchemaProps,\n type TreeMultipleStringElement,\n type TreeMultipleStringProps,\n type TreeProps,\n type TreeSchemaElement,\n type TreeSchemaProps,\n type TreeStringElement,\n type TreeStringProps,\n} from './tree';\nexport { default as Typography, type TypographyElement, type TypographyProps } from './typography';\nexport { default as dayjs } from './date-picker/dayjs';\nexport { default as Provider, type ProviderElement, type ProviderProps } from './provider';\nexport { hot, customElement, noShadowDOM, withSolid, getCurrentElement } from 'solid-element';\nexport type { CustomElement } from 'custom-element-type';\nimport { Transform } from 'custom-element-type';\nimport type {\n AvatarElement,\n AvatarGroupElement,\n BackTopElement,\n ButtonElement,\n CaptureScreenElement,\n CarouselElement,\n CheckboxBoolElement,\n CheckboxGroupElement,\n CodeElement,\n ColorPaletteElement,\n ColorPickerElement,\n CronElement,\n DatePickerElement,\n DropdownElement,\n DropdownMultipleElement,\n EmptyElement,\n HighlightTextElement,\n ImgElement,\n InputElement,\n InputNumberElement,\n MdElement,\n MenuElement,\n MenuMultipleElement,\n PaginationElement,\n PopoverElement,\n ProviderElement,\n RadioElement,\n SegmentedElement,\n SelectElement,\n SelectMultipleElement,\n SkeletonElement,\n SpinElement,\n SwitchElement,\n TableElement,\n TabsElement,\n TagElement,\n TreeElement,\n TreeMultipleElement,\n TreeMultipleSchemaElement,\n TreeMultipleStringElement,\n TreeSchemaElement,\n TreeStringElement,\n TypographyElement,\n} from '.';\n\n/** 组件列表\n * @author monako97\n * @ignore optional\n */\ninterface CustomElementTags {\n /** 头像 */\n 'n-avatar': AvatarElement;\n /** 头像组 */\n 'n-avatar-group': AvatarGroupElement;\n /** 返回顶部 */\n 'n-back-top': BackTopElement;\n /** 按钮 */\n 'n-button': ButtonElement;\n /** 捕获屏幕 */\n 'n-capture-screen': CaptureScreenElement;\n /** 走马灯、轮播 */\n 'n-carousel': CarouselElement;\n /** 复选框 */\n 'n-checkbox': CheckboxBoolElement | CheckboxGroupElement;\n /** 代码框 */\n 'n-code': CodeElement;\n /** 取色器 */\n 'n-color-palette': ColorPaletteElement;\n /** 取色器(弹出类型) */\n 'n-color-picker': ColorPickerElement;\n /** 下拉面板 */\n 'n-dropdown': DropdownElement | DropdownMultipleElement;\n /** 空面板 */\n 'n-empty': EmptyElement;\n /** 匹配高亮文字 */\n 'n-highlight-text': HighlightTextElement;\n /** 图片查看器 */\n 'n-img': ImgElement;\n /** 输入框 */\n 'n-input': InputElement;\n /** 数字输入框 */\n 'n-input-number': InputNumberElement;\n /** Markdown渲染 */\n 'n-md': MdElement;\n /** 弹出气泡面板 */\n 'n-popover': PopoverElement;\n /** 单选项 */\n 'n-radio': RadioElement;\n /** 分段控制器 */\n 'n-segmented': SegmentedElement;\n /** 下拉选择框 */\n 'n-select': SelectElement | SelectMultipleElement;\n /** 骨架屏 */\n 'n-skeleton': SkeletonElement;\n /** 加载中 */\n 'n-spin': SpinElement;\n /** 开关 */\n 'n-switch': SwitchElement;\n /** 树形渲染 */\n 'n-tree':\n | TreeElement\n | TreeStringElement\n | TreeSchemaElement\n | TreeMultipleElement\n | TreeMultipleStringElement\n | TreeMultipleSchemaElement;\n /** 文字排版 */\n 'n-typography': TypographyElement;\n /** 标签页 */\n 'n-tabs': TabsElement;\n /** 标签 */\n 'n-tag': TagElement;\n /** 导航菜单 */\n 'n-menu': MenuElement | MenuMultipleElement;\n /** Cron表达式编辑器 */\n 'n-cron': CronElement;\n /** 日期选择器\n * @since 2.1.0\n */\n 'n-data-picker': DatePickerElement;\n /** 数据表格\n * @since 2.2.0\n */\n 'n-table': TableElement;\n /** 分页器\n * @since 2.2.0\n */\n 'n-pagination': PaginationElement;\n /** 响应内部变化\n * @since 2.3.0\n */\n 'n-provider': ProviderElement;\n}\ntype IntrinsicNekoElement = Transform<CustomElementTags>;\n\ndeclare module 'solid-js' {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n export interface IntrinsicElements extends HTMLElementTags, IntrinsicNekoElement {}\n }\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n export interface IntrinsicElements extends IntrinsicNekoElement {}\n }\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\n\nexport interface ComponentOptions<T> {\n element: T & ICustomElement;\n}\n"],"names":["Avatar","AvatarGroup","BackTop","FieldName","Size","Status","Button","CaptureScreen","Carousel","Checkbox","Code","ColorPalette","ColorPicker","Cron","DatePicker","Dropdown","Empty","fromSchema","getOptions","HighlightText","Img","Input","InputNumber","Md","Menu","Pagination","Popover","Radio","Segmented","Select","Skeleton","Spin","Switch","Table","Tabs","Tag","theme","generateTheme","toneColor","Tree","Typography","dayjs","Provider","hot","customElement","noShadowDOM","withSolid","getCurrentElement"],"mappings":"+JAAoBA,MAAM,mBAANA,SAAM,EAEbC,WAAW,mBAAXA,SAAW,EAIJC,OAAO,mBAAPA,SAAO,EACiBC,SAAS,mBAATA,WAAS,EAAEC,IAAI,mBAAJA,MAAI,EAAEC,MAAM,mBAANA,QAAM,EAC/CC,MAAM,mBAANA,SAAM,EAEbC,aAAa,mBAAbA,SAAa,EAINC,QAAQ,mBAARA,SAAQ,EAEfC,QAAQ,mBAARA,SAAQ,EAMDC,IAAI,mBAAJA,SAAI,EAEXC,YAAY,mBAAZA,SAAY,EAKZC,WAAW,mBAAXA,SAAW,EAIJC,IAAI,mBAAJA,SAAI,EACJC,UAAU,mBAAVA,SAAU,EAEjBC,QAAQ,mBAARA,SAAQ,EAMDC,KAAK,mBAALA,SAAK,EACLC,UAAU,mBAAVA,SAAU,EACVC,UAAU,mBAAVA,SAAU,EAEjBC,aAAa,mBAAbA,SAAa,EAINC,GAAG,mBAAHA,SAAG,EACHC,KAAK,mBAALA,SAAK,EAEZC,WAAW,mBAAXA,SAAW,EAIJC,EAAE,mBAAFA,SAAE,EAETC,IAAI,mBAAJA,SAAI,EAOGC,UAAU,mBAAVA,SAAU,EACVC,OAAO,mBAAPA,SAAO,EACPC,KAAK,mBAALA,SAAK,EACLC,SAAS,mBAATA,SAAS,EAEhBC,MAAM,mBAANA,SAAM,EAMCC,QAAQ,mBAARA,SAAQ,EACRC,IAAI,mBAAJA,SAAI,EACJC,MAAM,mBAANA,SAAM,EACNC,KAAK,mBAALA,SAAK,EACLC,IAAI,mBAAJA,SAAI,EACJC,GAAG,mBAAHA,SAAG,EAEVC,KAAK,mBAALA,SAAK,EAGhBC,aAAa,mBAAbA,eAAa,EACbC,SAAS,mBAATA,WAAS,EAGEC,IAAI,mBAAJA,SAAI,EAcGC,UAAU,mBAAVA,SAAU,EACVC,KAAK,mBAALA,SAAK,EACLC,QAAQ,mBAARA,SAAQ,EACnBC,GAAG,mBAAHA,KAAG,EAAEC,aAAa,mBAAbA,eAAa,EAAEC,WAAW,mBAAXA,aAAW,EAAEC,SAAS,mBAATA,WAAS,EAAEC,iBAAiB,mBAAjBA,mBAAiB,gJA5GE,wCAKjE,8CACoE,yBACA,6CACH,wCAKjE,gDACuE,0CAOvE,0CAC2D,sCAK3D,+CAKA,8CAC2D,sCACkB,6CAO7E,0CAC8D,uCAC/B,6CACA,6CAK/B,gDACwD,qCACM,uCAK9D,8CACqD,oCAQrD,sCAC6E,4CACT,yCACY,uCACN,2CAO1E,wCACuE,0CACZ,sCACM,wCACH,uCACa,sCACnB,qCAOxD,uCAeA,sCAC6E,4CACnD,mDAC6C,yBACA"}
|
|
1
|
+
{"version":3,"sources":["../components/index.ts"],"sourcesContent":["export { default as Avatar, type AvatarElement, type AvatarProps } from './avatar';\nexport {\n default as AvatarGroup,\n type AvatarGroupElement,\n type AvatarGroupProps,\n} from './avatar/group';\nexport { default as BackTop, type BackTopElement, type BackTopProps } from './back-top';\nexport { type BaseOption, type BasicConfig, FieldName, Size, Status } from './basic-config';\nexport { default as Button, type ButtonElement, type ButtonProps } from './button';\nexport {\n default as CaptureScreen,\n type CaptureScreenElement,\n type CaptureScreenProps,\n} from './capture-screen';\nexport { default as Carousel, type CarouselElement, type CarouselProps } from './carousel';\nexport {\n default as Checkbox,\n type CheckboxBoolElement,\n type CheckboxBoolProps,\n type CheckboxGroupElement,\n type CheckboxGroupProps,\n} from './checkbox';\nexport { default as Code, type CodeElement, type CodeProps } from './code';\nexport {\n default as ColorPalette,\n type ColorPaletteElement,\n type ColorPaletteProps,\n} from './color-palette';\nexport {\n default as ColorPicker,\n type ColorPickerElement,\n type ColorPickerProps,\n} from './color-picker';\nexport { default as Cron, type CronElement, type CronProps } from './cron';\nexport { default as DatePicker, type DatePickerProps, type DatePickerElement } from './date-picker';\nexport {\n default as Dropdown,\n type DropdownElement,\n type DropdownMultipleElement,\n type DropdownMultipleProps,\n type DropdownProps,\n} from './dropdown';\nexport { default as Empty, type EmptyElement, type EmptyProps } from './empty';\nexport { default as fromSchema } from './from-schema';\nexport { default as getOptions } from './get-options';\nexport {\n default as HighlightText,\n type HighlightTextElement,\n type HighlightTextProps,\n} from './highlight-text';\nexport { default as Img, type ImgElement, type ImgProps } from './img';\nexport { default as Input, type InputElement, type InputProps } from './input';\nexport {\n default as InputNumber,\n type InputNumberElement,\n type InputNumberProps,\n} from './input-number';\nexport { default as Md, type MdElement, type MdProps } from './md';\nexport {\n default as Menu,\n type MenuElement,\n type MenuMultipleElement,\n type MenuMultipleProps,\n type MenuOption,\n type MenuProps,\n} from './menu';\nexport { default as Pagination, type PaginationProps, type PaginationElement } from './pagination';\nexport { default as Popover, type PopoverElement, type PopoverProps } from './popover';\nexport { default as Radio, type RadioElement, type RadioOption, type RadioProps } from './radio';\nexport { default as Segmented, type SegmentedElement, type SegmentedProps } from './segmented';\nexport {\n default as Select,\n type SelectElement,\n type SelectMultipleElement,\n type SelectMultipleProps,\n type SelectProps,\n} from './select';\nexport { default as Skeleton, type SkeletonElement, type SkeletonProps } from './skeleton';\nexport { default as Spin, type SpinElement, type SpinProps } from './spin';\nexport { default as Switch, type SwitchElement, type SwitchProps } from './switch';\nexport { default as Table, type TableElement, type TableProps } from './table';\nexport { default as Tabs, type TabOption, type TabsElement, type TabsProps } from './tabs';\nexport { default as Tag, type TagElement, type TagProps } from './tag';\nexport {\n default as theme,\n type ColorScheme,\n type ThemeOption,\n generateTheme,\n toneColor,\n} from './theme';\nexport {\n default as Tree,\n type TreeElement,\n type TreeMultipleElement,\n type TreeMultipleProps,\n type TreeMultipleSchemaElement,\n type TreeMultipleSchemaProps,\n type TreeMultipleStringElement,\n type TreeMultipleStringProps,\n type TreeProps,\n type TreeSchemaElement,\n type TreeSchemaProps,\n type TreeStringElement,\n type TreeStringProps,\n} from './tree';\nexport { default as Typography, type TypographyElement, type TypographyProps } from './typography';\nexport { default as dayjs } from './date-picker/dayjs';\nexport { default as Provider, type ProviderElement, type ProviderProps } from './provider';\nexport { hot, customElement, noShadowDOM, withSolid, getCurrentElement } from 'solid-element';\nexport type { CustomElement } from 'custom-element-type';\nimport { Transform } from 'custom-element-type';\nimport type {\n AvatarElement,\n AvatarGroupElement,\n BackTopElement,\n ButtonElement,\n CaptureScreenElement,\n CarouselElement,\n CheckboxBoolElement,\n CheckboxGroupElement,\n CodeElement,\n ColorPaletteElement,\n ColorPickerElement,\n CronElement,\n DatePickerElement,\n DropdownElement,\n DropdownMultipleElement,\n EmptyElement,\n HighlightTextElement,\n ImgElement,\n InputElement,\n InputNumberElement,\n MdElement,\n MenuElement,\n MenuMultipleElement,\n PaginationElement,\n PopoverElement,\n ProviderElement,\n RadioElement,\n SegmentedElement,\n SelectElement,\n SelectMultipleElement,\n SkeletonElement,\n SpinElement,\n SwitchElement,\n TableElement,\n TabsElement,\n TagElement,\n TreeElement,\n TreeMultipleElement,\n TreeMultipleSchemaElement,\n TreeMultipleStringElement,\n TreeSchemaElement,\n TreeStringElement,\n TypographyElement,\n} from '.';\n\n/** 组件列表\n * @author monako97\n * @ignore optional\n */\ninterface CustomElementTags {\n /** 头像 */\n 'n-avatar': AvatarElement;\n /** 头像组 */\n 'n-avatar-group': AvatarGroupElement;\n /** 返回顶部 */\n 'n-back-top': BackTopElement;\n /** 按钮 */\n 'n-button': ButtonElement;\n /** 捕获屏幕 */\n 'n-capture-screen': CaptureScreenElement;\n /** 走马灯、轮播 */\n 'n-carousel': CarouselElement;\n /** 复选框 */\n 'n-checkbox': CheckboxBoolElement | CheckboxGroupElement;\n /** 代码框 */\n 'n-code': CodeElement;\n /** 取色器 */\n 'n-color-palette': ColorPaletteElement;\n /** 取色器(弹出类型) */\n 'n-color-picker': ColorPickerElement;\n /** 下拉面板 */\n 'n-dropdown': DropdownElement | DropdownMultipleElement;\n /** 空面板 */\n 'n-empty': EmptyElement;\n /** 匹配高亮文字 */\n 'n-highlight-text': HighlightTextElement;\n /** 图片查看器 */\n 'n-img': ImgElement;\n /** 输入框 */\n 'n-input': InputElement;\n /** 数字输入框 */\n 'n-input-number': InputNumberElement;\n /** Markdown渲染 */\n 'n-md': MdElement;\n /** 弹出气泡面板 */\n 'n-popover': PopoverElement;\n /** 单选项 */\n 'n-radio': RadioElement;\n /** 分段控制器 */\n 'n-segmented': SegmentedElement;\n /** 下拉选择框 */\n 'n-select': SelectElement | SelectMultipleElement;\n /** 骨架屏 */\n 'n-skeleton': SkeletonElement;\n /** 加载中 */\n 'n-spin': SpinElement;\n /** 开关 */\n 'n-switch': SwitchElement;\n /** 树形渲染 */\n 'n-tree':\n | TreeElement\n | TreeStringElement\n | TreeSchemaElement\n | TreeMultipleElement\n | TreeMultipleStringElement\n | TreeMultipleSchemaElement;\n /** 文字排版 */\n 'n-typography': TypographyElement;\n /** 标签页 */\n 'n-tabs': TabsElement;\n /** 标签 */\n 'n-tag': TagElement;\n /** 导航菜单 */\n 'n-menu': MenuElement | MenuMultipleElement;\n /** Cron表达式编辑器 */\n 'n-cron': CronElement;\n /** 日期选择器\n * @since 2.1.0\n */\n 'n-data-picker': DatePickerElement;\n /** 数据表格\n * @since 2.2.0\n */\n 'n-table': TableElement;\n /** 分页器\n * @since 2.2.0\n */\n 'n-pagination': PaginationElement;\n /** 响应内部变化\n * @since 2.3.0\n */\n 'n-provider': ProviderElement;\n}\ntype IntrinsicNekoElement = Transform<CustomElementTags>;\n\ndeclare module 'solid-js' {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n export interface IntrinsicElements extends HTMLElementTags, IntrinsicNekoElement {}\n }\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n export interface IntrinsicElements extends IntrinsicNekoElement {}\n }\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\n\nexport interface ComponentOptions<T> {\n element: T & ICustomElement;\n}\n"],"names":["Avatar","AvatarGroup","BackTop","Button","CaptureScreen","Carousel","Checkbox","Code","ColorPalette","ColorPicker","Cron","DatePicker","Dropdown","Empty","FieldName","HighlightText","Img","Input","InputNumber","Md","Menu","Pagination","Popover","Provider","Radio","Segmented","Select","Size","Skeleton","Spin","Status","Switch","Table","Tabs","Tag","Tree","Typography","customElement","dayjs","fromSchema","generateTheme","getCurrentElement","getOptions","hot","noShadowDOM","theme","toneColor","withSolid"],"mappings":"+JAAoBA,MAAM,mBAANA,SAAM,EAEbC,WAAW,mBAAXA,SAAW,EAIJC,OAAO,mBAAPA,SAAO,EAEPC,MAAM,mBAANA,SAAM,EAEbC,aAAa,mBAAbA,SAAa,EAINC,QAAQ,mBAARA,SAAQ,EAEfC,QAAQ,mBAARA,SAAQ,EAMDC,IAAI,mBAAJA,SAAI,EAEXC,YAAY,mBAAZA,SAAY,EAKZC,WAAW,mBAAXA,SAAW,EAIJC,IAAI,mBAAJA,SAAI,EACJC,UAAU,mBAAVA,SAAU,EAEjBC,QAAQ,mBAARA,SAAQ,EAMDC,KAAK,mBAALA,SAAK,EAnCmBC,SAAS,mBAATA,WAAS,EAuCxCC,aAAa,mBAAbA,SAAa,EAINC,GAAG,mBAAHA,SAAG,EACHC,KAAK,mBAALA,SAAK,EAEZC,WAAW,mBAAXA,SAAW,EAIJC,EAAE,mBAAFA,SAAE,EAETC,IAAI,mBAAJA,SAAI,EAOGC,UAAU,mBAAVA,SAAU,EACVC,OAAO,mBAAPA,SAAO,EAwCPC,QAAQ,mBAARA,SAAQ,EAvCRC,KAAK,mBAALA,SAAK,EACLC,SAAS,mBAATA,SAAS,EAEhBC,MAAM,mBAANA,SAAM,EAhEoCC,IAAI,mBAAJA,MAAI,EAsEvCC,QAAQ,mBAARA,SAAQ,EACRC,IAAI,mBAAJA,SAAI,EAvEqCC,MAAM,mBAANA,QAAM,EAwE/CC,MAAM,mBAANA,SAAM,EACNC,KAAK,mBAALA,SAAK,EACLC,IAAI,mBAAJA,SAAI,EACJC,GAAG,mBAAHA,SAAG,EASVC,IAAI,mBAAJA,SAAI,EAcGC,UAAU,mBAAVA,SAAU,EAGhBC,aAAa,mBAAbA,eAAa,EAFPC,KAAK,mBAALA,SAAK,EA/DLC,UAAU,mBAAVA,SAAU,EA4C5BC,aAAa,mBAAbA,eAAa,EAqBsCC,iBAAiB,mBAAjBA,mBAAiB,EAhElDC,UAAU,mBAAVA,SAAU,EAgErBC,GAAG,mBAAHA,KAAG,EAAiBC,WAAW,mBAAXA,aAAW,EAxB3BC,KAAK,mBAALA,SAAK,EAIhBC,SAAS,mBAATA,WAAS,EAoB+BC,SAAS,mBAATA,WAAS,gJA5GqB,wCAKjE,8CACoE,yBACA,6CACH,wCAKjE,gDACuE,0CAOvE,0CAC2D,sCAK3D,+CAKA,8CAC2D,sCACkB,6CAO7E,0CAC8D,uCAC/B,6CACA,6CAK/B,gDACwD,qCACM,uCAK9D,8CACqD,oCAQrD,sCAC6E,4CACT,yCACY,uCACN,2CAO1E,wCACuE,0CACZ,sCACM,wCACH,uCACa,sCACnB,qCAOxD,uCAeA,sCAC6E,4CACnD,mDAC6C,yBACA"}
|
package/lib/input/index.d.ts
CHANGED
|
@@ -8,6 +8,10 @@ export interface InputProps {
|
|
|
8
8
|
prefixIcon?: JSX.Element;
|
|
9
9
|
/** 后缀 */
|
|
10
10
|
suffixIcon?: JSX.Element;
|
|
11
|
+
/** 大写锁定图标, 可以结合密码输入框使用
|
|
12
|
+
* @since 2.5.2
|
|
13
|
+
*/
|
|
14
|
+
capsLockIcon?: JSX.Element;
|
|
11
15
|
/** 禁用 */
|
|
12
16
|
disabled?: boolean;
|
|
13
17
|
/** 自动完成 */
|
|
@@ -26,7 +30,7 @@ export interface InputProps {
|
|
|
26
30
|
* @default 'text'
|
|
27
31
|
*/
|
|
28
32
|
type?: 'email' | 'hidden' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url';
|
|
29
|
-
/** HTML
|
|
33
|
+
/** HTML attribute: accept */
|
|
30
34
|
accept?: string;
|
|
31
35
|
/** 值 */
|
|
32
36
|
value?: string | number;
|
|
@@ -51,6 +55,7 @@ export declare const defaultInportProps: {
|
|
|
51
55
|
css: undefined;
|
|
52
56
|
suffixIcon: undefined;
|
|
53
57
|
prefixIcon: undefined;
|
|
58
|
+
capsLockIcon: undefined;
|
|
54
59
|
size: undefined;
|
|
55
60
|
disabled: undefined;
|
|
56
61
|
status: undefined;
|
package/lib/input/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{default:function(){return _},defaultInportProps:function(){return m}});const e=require("@swc/helpers/_/_interop_require_default"),t=require("solid-js/web"),n=require("solid-js"),r=/*#__PURE__*/e._(require("@moneko/common/lib/isFunction")),o=require("@moneko/css"),i=require("solid-element"),l=require("./style"),s=/*#__PURE__*/e._(require("../theme")),a=/*#__PURE__*/(0,t.template)("<style>"),u=/*#__PURE__*/(0,t.template)('<span class="prefix">'),c=/*#__PURE__*/(0,t.template)('<label class="label">'),d=/*#__PURE__*/(0,t.template)('<span class="caps-lock">'),p=/*#__PURE__*/(0,t.template)('<span class="suffix">'),v=/*#__PURE__*/(0,t.template)('<fieldset><input class="input" part="input">');function f(e){let i;let{baseStyle:f}=s.default,[m,_]=(0,n.createSignal)(),[h,g]=(0,n.createSignal)(!1);function b(t){e.onChange?.(function(t){if(e.parser)return(0,r.default)(e.parser)?e.parser(t):e.parser;if("number"===e.type&&"string"==typeof t){let e=t.replace(/[^\d]/g,"");return e.length?parseFloat(e):void 0}return t}(t.target?.value))}function y(t){e.onMouseDown?.(t)}function w(t){e.capsLockIcon&&g(t.getModifierState("CapsLock")),e.onKeyDown?.(t)}function $(t){e.onBlur?.(t)}function x(t){e.onKeyUp?.(t)}let C=(0,n.createMemo)(()=>e.formatter?(0,r.default)(e.formatter)?e.formatter(e.value):e.formatter:e.value);return(0,n.createEffect)(()=>{e.label&&_(`.label {--x: ${i?.offsetLeft||0}px;opacity:1;}`)}),[(()=>{let n=a();return(0,t.insert)(n,f,null),(0,t.insert)(n,l.style,null),(0,t.insert)(n,m,null),(0,t.insert)(n,()=>(0,o.css)(e.css),null),n})(),(()=>{let r=v(),l=r.firstChild,s=i;return(0,t.insert)(r,(0,t.createComponent)(n.Show,{get when(){return e.prefixIcon},get children(){let n=u();return(0,t.insert)(n,()=>e.prefixIcon),n}}),l),(0,t.addEventListener)(l,"blur",$),(0,t.addEventListener)(l,"keyup",x,!0),(0,t.addEventListener)(l,"keydown",w,!0),(0,t.addEventListener)(l,"mousedown",y,!0),(0,t.addEventListener)(l,"change",b),"function"==typeof s?(0,t.use)(s,l):i=l,(0,t.insert)(r,(0,t.createComponent)(n.Show,{get when(){return e.label},get children(){let n=c();return(0,t.insert)(n,()=>e.label),n}}),null),(0,t.insert)(r,(0,t.createComponent)(n.Show,{get when(){return(0,t.memo)(()=>!!e.capsLockIcon)()&&h()},get children(){let n=d();return(0,t.insert)(n,()=>e.capsLockIcon),n}}),null),(0,t.insert)(r,(0,t.createComponent)(n.Show,{get when(){return e.suffixIcon},get children(){let n=p();return(0,t.insert)(n,()=>e.suffixIcon),n}}),null),(0,t.effect)(n=>{let i=(0,o.cx)("fieldset",e.size,e.status,e.class),s=e.disabled,a=e.type,u=e.autoComplete,c=e.accept,d=e.placeholder;return i!==n._v$&&(0,t.className)(r,n._v$=i),s!==n._v$2&&(r.disabled=n._v$2=s),a!==n._v$3&&(0,t.setAttribute)(l,"type",n._v$3=a),u!==n._v$4&&(0,t.setAttribute)(l,"autocomplete",n._v$4=u),c!==n._v$5&&(0,t.setAttribute)(l,"accept",n._v$5=c),d!==n._v$6&&(0,t.setAttribute)(l,"placeholder",n._v$6=d),n},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0}),(0,t.effect)(()=>l.value=C()),r})()]}const m={class:void 0,css:void 0,suffixIcon:void 0,prefixIcon:void 0,capsLockIcon:void 0,size:void 0,disabled:void 0,status:void 0,type:void 0,label:void 0,value:void 0,defaultValue:void 0,formatter:void 0,parser:void 0,onChange:void 0,onMouseDown:void 0,onKeyDown:void 0,accept:void 0,autoComplete:void 0,placeholder:"请输入"};(0,i.customElement)("n-input",m,(e,t)=>{let r=t.element,o=(0,n.mergeProps)({css:r.css,size:r.size||"normal",value:r.value||r.defaultValue||"",type:r.type||"text",onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return(0,n.createComponent)(f,o)});const _=f;(0,t.delegateEvents)(["keydown","keyup","mousedown"]);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/input/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/input/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement } from '..';\n\nexport interface InputProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 前缀 */\n prefixIcon?: JSX.Element;\n /** 后缀 */\n suffixIcon?: JSX.Element;\n /** 禁用 */\n disabled?: boolean;\n /** 自动完成 */\n autoComplete?: string;\n /** 占位文本 */\n placeholder?: string;\n /** 组件尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 描述 */\n label?: JSX.Element;\n /** 状态 */\n status?: 'error' | 'warning' | 'success';\n /** 类型\n * @default 'text'\n */\n type?: 'email' | 'hidden' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url';\n /** HTML
|
|
1
|
+
{"version":3,"sources":["../../components/input/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement } from '..';\n\nexport interface InputProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 前缀 */\n prefixIcon?: JSX.Element;\n /** 后缀 */\n suffixIcon?: JSX.Element;\n /** 大写锁定图标, 可以结合密码输入框使用\n * @since 2.5.2\n */\n capsLockIcon?: JSX.Element;\n /** 禁用 */\n disabled?: boolean;\n /** 自动完成 */\n autoComplete?: string;\n /** 占位文本 */\n placeholder?: string;\n /** 组件尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 描述 */\n label?: JSX.Element;\n /** 状态 */\n status?: 'error' | 'warning' | 'success';\n /** 类型\n * @default 'text'\n */\n type?: 'email' | 'hidden' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url';\n /** HTML attribute: accept */\n accept?: string;\n /** 值 */\n value?: string | number;\n /** 默认值 */\n defaultValue?: string | number;\n /** 值变更时触发的函数 */\n onChange?: (value: InputProps['value']) => void;\n onKeyDown?(e: KeyboardEvent): void;\n onMouseDown?(e: MouseEvent): void;\n onFocus?(e: FocusEvent): void;\n onBlur?(e: FocusEvent): void;\n onKeyUp?(e: KeyboardEvent): void;\n /** 指定输入框展示值的格式 */\n formatter?: (value?: InputProps['value']) => InputProps['value'];\n /** 搭配 formatter 使用, 将转换后的值转回原来的值 */\n parser?: (value?: InputProps['value']) => InputProps['value'];\n}\n\nfunction Input(props: InputProps) {\n const { baseStyle } = theme;\n let inputRef: HTMLInputElement | undefined;\n const [x, setX] = createSignal<string>();\n const [capsLock, setCapsLock] = createSignal(false);\n\n function parserValue(val: InputProps['value']) {\n if (props.parser) {\n return isFunction(props.parser) ? props.parser(val) : props.parser;\n } else if (props.type === 'number' && typeof val === 'string') {\n const num = val.replace(/[^\\d]/g, '');\n\n return num.length ? parseFloat(num) : void 0;\n }\n return val;\n }\n\n function handleInput(e: Event & { target: HTMLInputElement }) {\n props.onChange?.(parserValue(e.target?.value));\n }\n function handleMouseDown(e: MouseEvent) {\n props.onMouseDown?.(e);\n }\n function handleKeyDown(e: KeyboardEvent) {\n if (props.capsLockIcon) {\n setCapsLock(e.getModifierState('CapsLock'));\n }\n props.onKeyDown?.(e);\n }\n function handleBlur(e: FocusEvent) {\n props.onBlur?.(e);\n }\n function handleKeyUp(e: KeyboardEvent) {\n props.onKeyUp?.(e);\n }\n\n const value = createMemo(() => {\n if (props.formatter) {\n return isFunction(props.formatter) ? props.formatter(props.value) : props.formatter;\n }\n return props.value;\n });\n\n createEffect(() => {\n if (props.label) {\n setX(`.label {--x: ${inputRef?.offsetLeft || 0}px;opacity:1;}`);\n }\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {x()}\n {css(props.css)}\n </style>\n <fieldset\n class={cx('fieldset', props.size, props.status, props.class)}\n disabled={props.disabled}\n >\n <Show when={props.prefixIcon}>\n <span class=\"prefix\">{props.prefixIcon}</span>\n </Show>\n <input\n ref={inputRef}\n class=\"input\"\n part=\"input\"\n onChange={handleInput}\n type={props.type}\n value={value()}\n autocomplete={props.autoComplete}\n accept={props.accept}\n placeholder={props.placeholder}\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onBlur={handleBlur}\n />\n <Show when={props.label}>\n <label class=\"label\">{props.label}</label>\n </Show>\n <Show when={props.capsLockIcon && capsLock()}>\n <span class=\"caps-lock\">{props.capsLockIcon}</span>\n </Show>\n <Show when={props.suffixIcon}>\n <span class=\"suffix\">{props.suffixIcon}</span>\n </Show>\n </fieldset>\n </>\n );\n}\n\nexport type InputElement = CustomElement<InputProps>;\n\nexport const defaultInportProps = {\n class: void 0,\n css: void 0,\n suffixIcon: void 0,\n prefixIcon: void 0,\n capsLockIcon: void 0,\n size: void 0,\n disabled: void 0,\n status: void 0,\n type: void 0,\n label: void 0,\n value: void 0,\n defaultValue: void 0,\n formatter: void 0,\n parser: void 0,\n onChange: void 0,\n onMouseDown: void 0,\n onKeyDown: void 0,\n accept: void 0,\n autoComplete: void 0,\n placeholder: '请输入',\n};\n\ncustomElement<InputProps>('n-input', defaultInportProps, (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n size: el.size || 'normal',\n value: el.value || el.defaultValue || '',\n type: el.type || 'text',\n onChange(val?: number | string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(Input, props);\n});\n\nexport default Input;\n"],"names":["defaultInportProps","Input","props","inputRef","baseStyle","theme","x","setX","createSignal","capsLock","setCapsLock","handleInput","e","onChange","parserValue","val","parser","isFunction","type","num","replace","length","parseFloat","target","value","handleMouseDown","onMouseDown","handleKeyDown","capsLockIcon","getModifierState","onKeyDown","handleBlur","onBlur","handleKeyUp","onKeyUp","createMemo","formatter","createEffect","label","offsetLeft","style","css","Show","prefixIcon","suffixIcon","cx","size","status","class","disabled","autoComplete","accept","placeholder","defaultValue","customElement","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","detail","createComponent"],"mappings":"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"}
|
package/lib/input/style.js
CHANGED
package/lib/input/style.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/input/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n .label {\n --x: 0;\n\n position: absolute;\n overflow: hidden;\n border-radius: var(--border-radius);\n padding: 0 4px;\n text-overflow: ellipsis;\n color: var(--text-secondary);\n opacity: 0;\n transition:\n transform var(--transition-duration),\n opacity var(--transition-duration),\n color var(--transition-duration),\n background-color var(--transition-duration);\n line-height: 1.45;\n pointer-events: none;\n transform-origin: left;\n max-inline-size: 100%;\n word-break: keep-all;\n }\n\n .normal {\n padding: 4px 10px;\n font-size: var(--font-size);\n line-height: 1.5;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 10px), 0, 1px);\n }\n }\n\n .large {\n padding: 6px 16px;\n font-size: var(--font-size-lg);\n line-height: 1.5;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 16px), 0, 1px);\n }\n }\n\n .small {\n padding: 2px;\n font-size: var(--font-size-sm);\n line-height: 20px;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 2px), 0, 1px);\n }\n }\n\n .input {\n overflow: hidden;\n border: none;\n font-size: inherit;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: inherit;\n inline-size: inherit;\n background: none;\n outline: none;\n appearance: none;\n flex: 1;\n\n &::placeholder {\n opacity: 0;\n transition:\n color var(--transition-duration),\n opacity var(--transition-duration);\n }\n\n &:focus::placeholder {\n opacity: 1;\n }\n\n &:not(:placeholder-shown) + .label,\n &:focus + .label {\n background: var(--component-bg);\n transform: translate3d(0, calc(-50% - 0.43em), 1px) scale(0.8);\n }\n\n &:focus + .label {\n color: var(--primary-color);\n }\n\n &:not(:placeholder-shown, :focus) + .label {\n color: var(--text-color);\n }\n }\n\n .fieldset {\n position: relative;\n display: flex;\n margin: 0;\n border: 1px solid var(--border-color);\n border-radius: var(--border-radius);\n color: var(--text-color);\n background-color: var(--component-bg);\n transition: all var(--transition-duration);\n inline-size: 100%;\n background-image: none;\n box-sizing: border-box;\n accent-color: var(--primary-color, #5794ff);\n\n &:hover {\n border-color: var(--primary-hover, #80b3ff);\n border-inline-end-width: 1px;\n }\n\n &:focus-within {\n border-color: var(--primary-hover, #80b3ff);\n border-inline-end-width: 1px;\n outline: 0;\n box-shadow: 0 0 0 2px var(--primary-outline);\n }\n\n &:invalid,\n &.error {\n --border-color: var(--error-border);\n --primary-hover: var(--error-hover);\n --primary-outline: var(--error-outline);\n --primary-color: var(--error-color);\n\n .label {\n --text-color: var(--error-color);\n }\n }\n\n &.success {\n --border-color: var(--success-border);\n --primary-hover: var(--success-hover);\n --primary-outline: var(--success-outline);\n --primary-color: var(--success-color);\n\n .label {\n --text-color: var(--success-color);\n }\n }\n\n &.warning {\n --border-color: var(--warning-border);\n --primary-hover: var(--warning-hover);\n --primary-outline: var(--warning-outline);\n --primary-color: var(--warning-color);\n\n .label {\n --text-color: var(--warning-color);\n }\n }\n\n &:disabled {\n --text-color: var(--disable-color);\n --border-color: var(--disable-border);\n --primary-hover: var(--disable-border);\n\n background-color: var(--disable-bg);\n cursor: not-allowed;\n\n .input {\n pointer-events: none;\n\n &:not(:placeholder-shown) + .label {\n background: var(--disable-border);\n }\n }\n }\n }\n\n .prefix {\n margin-inline-end: 4px;\n }\n\n .suffix {\n margin-inline-start: 4px;\n }\n`;\n"],"names":["style","css"],"mappings":"kGAEaA,6CAAAA,qBAFO,eAEPA,EAAQC,GAAAA,KAAG,CAAA,CAAC
|
|
1
|
+
{"version":3,"sources":["../../components/input/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n .label {\n --x: 0;\n\n position: absolute;\n overflow: hidden;\n border-radius: var(--border-radius);\n padding: 0 4px;\n text-overflow: ellipsis;\n color: var(--text-secondary);\n opacity: 0;\n transition:\n transform var(--transition-duration),\n opacity var(--transition-duration),\n color var(--transition-duration),\n background-color var(--transition-duration);\n line-height: 1.45;\n pointer-events: none;\n transform-origin: left;\n max-inline-size: 100%;\n word-break: keep-all;\n }\n\n .normal {\n padding: 4px 10px;\n font-size: var(--font-size);\n line-height: 1.5;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 10px), 0, 1px);\n }\n }\n\n .large {\n padding: 6px 16px;\n font-size: var(--font-size-lg);\n line-height: 1.5;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 16px), 0, 1px);\n }\n }\n\n .small {\n padding: 2px;\n font-size: var(--font-size-sm);\n line-height: 20px;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 2px), 0, 1px);\n }\n }\n\n .input {\n overflow: hidden;\n border: none;\n font-size: inherit;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: inherit;\n inline-size: inherit;\n background: none;\n outline: none;\n appearance: none;\n flex: 1;\n\n &::placeholder {\n opacity: 0;\n transition:\n color var(--transition-duration),\n opacity var(--transition-duration);\n }\n\n &:focus::placeholder {\n opacity: 1;\n }\n\n &:not(:placeholder-shown) + .label,\n &:focus + .label {\n background: var(--component-bg);\n transform: translate3d(0, calc(-50% - 0.43em), 1px) scale(0.8);\n }\n\n &:focus + .label {\n color: var(--primary-color);\n }\n\n &:not(:placeholder-shown, :focus) + .label {\n color: var(--text-color);\n }\n }\n\n .fieldset {\n position: relative;\n display: flex;\n margin: 0;\n border: 1px solid var(--border-color);\n border-radius: var(--border-radius);\n color: var(--text-color);\n background-color: var(--component-bg);\n transition: all var(--transition-duration);\n inline-size: 100%;\n background-image: none;\n box-sizing: border-box;\n accent-color: var(--primary-color, #5794ff);\n\n &:hover {\n border-color: var(--primary-hover, #80b3ff);\n border-inline-end-width: 1px;\n }\n\n &:focus-within {\n border-color: var(--primary-hover, #80b3ff);\n border-inline-end-width: 1px;\n outline: 0;\n box-shadow: 0 0 0 2px var(--primary-outline);\n }\n\n &:invalid,\n &.error {\n --border-color: var(--error-border);\n --primary-hover: var(--error-hover);\n --primary-outline: var(--error-outline);\n --primary-color: var(--error-color);\n\n .label {\n --text-color: var(--error-color);\n }\n }\n\n &.success {\n --border-color: var(--success-border);\n --primary-hover: var(--success-hover);\n --primary-outline: var(--success-outline);\n --primary-color: var(--success-color);\n\n .label {\n --text-color: var(--success-color);\n }\n }\n\n &.warning {\n --border-color: var(--warning-border);\n --primary-hover: var(--warning-hover);\n --primary-outline: var(--warning-outline);\n --primary-color: var(--warning-color);\n\n .label {\n --text-color: var(--warning-color);\n }\n }\n\n &:disabled {\n --text-color: var(--disable-color);\n --border-color: var(--disable-border);\n --primary-hover: var(--disable-border);\n\n background-color: var(--disable-bg);\n cursor: not-allowed;\n\n .input {\n pointer-events: none;\n\n &:not(:placeholder-shown) + .label {\n background: var(--disable-border);\n }\n }\n }\n }\n\n .prefix {\n margin-inline-end: 4px;\n }\n\n .suffix,\n .caps-lock {\n margin-inline-start: 4px;\n }\n`;\n"],"names":["style","css"],"mappings":"kGAEaA,6CAAAA,qBAFO,eAEPA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkLzB,CAAC"}
|
package/lib/popover/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var e,t,n,o;Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{
|
|
2
|
-
return`.portal {${Object.keys(e).map(t=>`${t}:${e[t]}px;`).join("")}z-index: 1;}`}),I=(0,l.createMemo)(()=>(0,p.cx)("portal",M.arrow&&"arrow",`${x()?"in":"out"}-${q()?"up":"down"}`,M.size,M.popupClass)),B=(0,l.createMemo)(()=>`:host {--popover-bg: ${d()?"#1f1f1f":"var(--component-bg)"};--popover-shadow-color: rgb(0 0 0 / 5%);}`);return(0,l.createEffect)(()=>{x()&&(T(),window.addEventListener("scroll",T,{passive:a.default})),(0,l.onCleanup)(()=>{window.removeEventListener("scroll",T,!1)})}),(0,l.onMount)(()=>{"none"!==M.trigger&&document.documentElement.addEventListener("mousedown",R,!1)}),(0,l.onCleanup)(()=>{clearTimeout(o),document.documentElement.removeEventListener("mousedown",R,!1)}),[(()=>{let e=f();return(0,i.insert)(e,b,null),(0,i.insert)(e,m.popoverCss,null),(0,i.insert)(e,()=>(0,p.css)(M.css),null),e})(),(()=>{let e=h(),t=n;return"function"==typeof t?(0,i.use)(t,e):n=e,(0,i.spread)(e,(0,i.mergeProps)({get class(){return(0,p.cx)("popover",M.size,M.class)}},W),!1,!0),(0,i.insert)(e,()=>M.children),e})(),(0,i.createComponent)(l.Show,{get when(){return null!==x()||!M.destroyInactive},get children(){return(0,i.createComponent)(i.Portal,{useShadow:!0,get mount(){return j()},get children(){return[(()=>{let e=f();return(0,i.insert)(e,b,null),(0,i.insert)(e,m.portalCss,null),(0,i.insert)(e,B,null),(0,i.insert)(e,z,null),(0,i.insert)(e,L,null),(0,i.insert)(e,()=>(0,p.css)(M.popupCss),null),e})(),(()=>{let e=v(),n=t;return(0,i.addEventListener)(e,"animationend",S),"function"==typeof n?(0,i.use)(n,e):t=e,(0,i.spread)(e,(0,i.mergeProps)({get class(){return I()}},W),!1,!0),(0,i.insert)(e,(0,i.createComponent)(l.Show,{get when(){return M.content},get fallback(){return(()=>{let e=w();return e._$owner=(0,i.getOwner)(),e})()},get children(){return M.content}})),e})()]}})}})]}(n=e||(e={}))
|
|
1
|
+
"use strict";var e,t,n,o;Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{Placement:function(){return t},TriggerOption:function(){return e},default:function(){return M},defaultProps:function(){return C}});const r=require("@swc/helpers/_/_interop_require_default"),i=require("solid-js/web"),l=require("solid-js"),s=/*#__PURE__*/r._(require("@moneko/common/lib/isElementInside")),u=/*#__PURE__*/r._(require("@moneko/common/lib/isEqual")),c=/*#__PURE__*/r._(require("@moneko/common/lib/isFunction")),a=/*#__PURE__*/r._(require("@moneko/common/lib/passiveSupported")),p=require("@moneko/css"),d=require("solid-element"),m=require("./style");require("../empty");const g=/*#__PURE__*/r._(require("../theme")),f=/*#__PURE__*/(0,i.template)("<style>"),h=/*#__PURE__*/(0,i.template)("<span>"),v=/*#__PURE__*/(0,i.template)("<div>"),w=/*#__PURE__*/(0,i.template)("<n-empty>",!0,!1);function b(e){let t,n,o,r;let{isDark:d,baseStyle:b}=g.default,C=(0,l.mergeProps)({trigger:"hover"},e),[M]=(0,l.splitProps)(C,["class","css","popupClass","popupCss","size","trigger","open","disabled","onOpenChange","dropdownMatchSelectWidth","destroyInactive","arrow","placement","getPopupContainer","children","content"]),[x,E]=(0,l.createSignal)(null),[y,P]=(0,l.createSignal)({}),[q,k]=(0,l.createSignal)(!1),[L,_]=(0,l.createSignal)("");function O(e){M.disabled||(M.onOpenChange&&M.onOpenChange(e),void 0===M.open&&E(e))}function S(){!1===x()&&(E(null),O(null))}function R(e){clearTimeout(o),o=setTimeout(()=>{if(clearTimeout(o),e.target?.getAttribute("handle-closed")==="false")return;let n=(0,s.default)(e.target,t);(x()&&!n||n&&"mousedown"!==e.type)&&O(!1)},"hover"===M.trigger?300:0)}(0,l.createEffect)(()=>{void 0!==M.open&&E(M.open)}),(0,l.createEffect)(()=>{x()&&M.dropdownMatchSelectWidth&&n&&_(`.portal {width: ${n.offsetWidth}px;}`)});let T=function(e){clearTimeout(r),r=setTimeout(()=>{if(clearTimeout(r),!t||!n||!e&&"contextMenu"===M.trigger)return;if(e?.type==="scroll"&&"contextMenu"===M.trigger){O(!1);return}let o=n.getBoundingClientRect(),i=t.getBoundingClientRect(),l=i.width/2-o.width/2,s=window.innerHeight-o.bottom,c=M.placement,a=!c?.startsWith("top")&&s>.8*t.offsetHeight&&s>o.top||c?.startsWith("bottom"),p=M.arrow?8:4,d={};switch(M.placement){case"bottomLeft":case"left":case"topLeft":d.left=o.left,d["--x"]=-i.width/2+16;break;case"bottomRight":case"right":case"topRight":d.left=o.right-i.width,d["--x"]=i.width/2-16;break;default:d.left=Math.abs(l>o.left?o.left:o.left-l),d["--x"]=-(d.left-o.left+l)}a?d.top=o.bottom+p:d.bottom=window.innerHeight-o.top+p,P(e=>(0,u.default)(e,d)?e:d),k(e=>!a===e?e:!a)},32)};function $(e){clearTimeout(o),e.stopPropagation(),"contextMenu"===M.trigger&&"contextmenu"===e.type&&(e.preventDefault(),P(n=>({...n,left:e.clientX,top:e.clientY,"--x":-(t?.getBoundingClientRect().width||0)/2+16}))),O(!0)}let j=(0,l.createMemo)(()=>(0,c.default)(M.getPopupContainer)?M.getPopupContainer(n):document.body),W=(0,l.createMemo)(()=>{let e={},t={click:"onMouseDown",hover:"onMouseEnter",contextMenu:"onContextMenu",none:null}[M.trigger],n={hover:"onMouseLeave",click:null,contextMenu:null,none:null}[M.trigger];return Object.assign(e,t&&{[t]:$},n&&{[n]:R}),e}),z=(0,l.createMemo)(()=>{let e=y();// max-block-size: calc(100vb - ${(up() ? p.bottom : p.top) || 0}px);
|
|
2
|
+
return`.portal {${Object.keys(e).map(t=>`${t}:${e[t]}px;`).join("")}z-index: 1;}`}),I=(0,l.createMemo)(()=>(0,p.cx)("portal",M.arrow&&"arrow",`${x()?"in":"out"}-${q()?"up":"down"}`,M.size,M.popupClass)),B=(0,l.createMemo)(()=>`:host {--popover-bg: ${d()?"#1f1f1f":"var(--component-bg)"};--popover-shadow-color: rgb(0 0 0 / 5%);}`);return(0,l.createEffect)(()=>{x()&&(T(),window.addEventListener("scroll",T,{passive:a.default})),(0,l.onCleanup)(()=>{window.removeEventListener("scroll",T,!1)})}),(0,l.onMount)(()=>{"none"!==M.trigger&&document.documentElement.addEventListener("mousedown",R,!1)}),(0,l.onCleanup)(()=>{clearTimeout(o),document.documentElement.removeEventListener("mousedown",R,!1)}),[(()=>{let e=f();return(0,i.insert)(e,b,null),(0,i.insert)(e,m.popoverCss,null),(0,i.insert)(e,()=>(0,p.css)(M.css),null),e})(),(()=>{let e=h(),t=n;return"function"==typeof t?(0,i.use)(t,e):n=e,(0,i.spread)(e,(0,i.mergeProps)({get class(){return(0,p.cx)("popover",M.size,M.class)}},W),!1,!0),(0,i.insert)(e,()=>M.children),e})(),(0,i.createComponent)(l.Show,{get when(){return null!==x()||!M.destroyInactive},get children(){return(0,i.createComponent)(i.Portal,{useShadow:!0,get mount(){return j()},get children(){return[(()=>{let e=f();return(0,i.insert)(e,b,null),(0,i.insert)(e,m.portalCss,null),(0,i.insert)(e,B,null),(0,i.insert)(e,z,null),(0,i.insert)(e,L,null),(0,i.insert)(e,()=>(0,p.css)(M.popupCss),null),e})(),(()=>{let e=v(),n=t;return(0,i.addEventListener)(e,"animationend",S),"function"==typeof n?(0,i.use)(n,e):t=e,(0,i.spread)(e,(0,i.mergeProps)({get class(){return I()}},W),!1,!0),(0,i.insert)(e,(0,i.createComponent)(l.Show,{get when(){return M.content},get fallback(){return(()=>{let e=w();return e._$owner=(0,i.getOwner)(),e})()},get children(){return M.content}})),e})()]}})}})]}(n=e||(e={})).hover="hover",n.click="click",n.contextMenu="contextMenu",n.none="none",(o=t||(t={})).bottomLeft="bottomLeft",o.bottom="bottom",o.bottomRight="bottomRight",o.topLeft="topLeft",o.top="top",o.topRight="topRight",o.left="left",o.right="right";const C={class:void 0,css:void 0,content:void 0,getPopupContainer:void 0,trigger:void 0,open:void 0,onOpenChange:void 0,popupClass:void 0,popupCss:void 0,destroyInactive:!0,disabled:void 0,arrow:void 0,placement:void 0,dropdownMatchSelectWidth:void 0};(0,d.customElement)("n-popover",C,(e,t)=>{let n=t.element,o=(0,l.mergeProps)({onOpenChange(e){n.dispatchEvent(new CustomEvent("openchange",{detail:e}))},children:[...n.childNodes.values()]},e);return(0,l.createEffect)(()=>{n.removeAttribute("css")}),(0,l.createComponent)(b,o)});const M=b;
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/lib/popover/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/popover/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n splitProps,\n} from 'solid-js';\nimport { isElementInside, isEqual, isFunction, passiveSupported } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { Portal } from 'solid-js/web';\nimport { popoverCss, portalCss } from './style';\nimport '../empty';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement } from '..';\n\nexport interface PopoverProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n content?: (() => JSX.Element) | JSX.Element;\n /** 挂载到指定的元素,值为一个返回对应 DOM 元素 默认 document.body */\n getPopupContainer?: (node?: HTMLElement | null) => HTMLElement;\n /** 触发行为\n * @default 'hover'\n */\n trigger?: keyof typeof TriggerOption;\n /** 打开内容气泡 */\n open?: boolean | null;\n /** 内容打开关闭时的回调方法 */\n onOpenChange?: (open: boolean | null) => void;\n /** 气泡的自定义类名 */\n popupClass?: string;\n /** 气泡的自定义样式表 */\n popupCss?: string;\n /** 关闭后是否销毁 */\n destroyInactive?: boolean;\n /** 不可用状态 */\n disabled?: boolean;\n /** 添加一个箭头显示 */\n arrow?: boolean;\n /** 指定气泡显示的方向 */\n placement?: keyof typeof Placement;\n /** 气泡宽度与触发dom一致 */\n dropdownMatchSelectWidth?: boolean;\n /** 尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n children?: JSX.Element;\n}\n\nexport enum TriggerOption {\n /** 鼠标移入 */\n hover = 'hover',\n /** 点击 */\n click = 'click',\n /** 右键 */\n contextMenu = 'contextMenu',\n /** 无 */\n none = 'none',\n}\n\nexport enum Placement {\n /** 左下 */\n bottomLeft = 'bottomLeft',\n /** 下 */\n bottom = 'bottom',\n /** 右下 */\n bottomRight = 'bottomRight',\n /** 左上 */\n topLeft = 'topLeft',\n /** 上 */\n top = 'top',\n /** 右上 */\n topRight = 'topRight',\n /** 左 */\n left = 'left',\n /** 右 */\n right = 'right',\n}\n\ntype Posi = {\n left?: number;\n top?: number;\n right?: number;\n bottom?: number;\n '--x'?: number;\n};\n\ntype EventMap = {\n click: string | null;\n hover: string | null;\n contextMenu: string | null;\n none: null;\n [key: string]: string | null;\n};\nfunction Popover(props: PopoverProps) {\n const { isDark, baseStyle } = theme;\n const mp = mergeProps(\n {\n trigger: 'hover',\n },\n props,\n );\n const [local] = splitProps(mp, [\n 'class',\n 'css',\n 'popupClass',\n 'popupCss',\n 'size',\n 'trigger',\n 'open',\n 'disabled',\n 'onOpenChange',\n 'dropdownMatchSelectWidth',\n 'destroyInactive',\n 'arrow',\n 'placement',\n 'getPopupContainer',\n 'children',\n 'content',\n ]);\n let ref: HTMLDivElement | undefined;\n let childRef: HTMLSpanElement | undefined;\n let closeTimer: NodeJS.Timeout | undefined;\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [posi, setPosi] = createSignal<Posi>({});\n const [up, setUp] = createSignal<boolean>(false);\n const [width, setWidth] = createSignal('');\n\n createEffect(() => {\n if (local.open !== void 0) {\n setOpen(local.open);\n }\n });\n function openChange(next: boolean | null) {\n if (!local.disabled) {\n if (local.onOpenChange) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n function exit() {\n if (open() === false) {\n setOpen(null);\n openChange(null);\n }\n }\n createEffect(() => {\n if (open() && local.dropdownMatchSelectWidth && childRef) {\n setWidth(`.portal {width: ${childRef.offsetWidth}px;}`);\n }\n });\n\n function close(e: MouseEvent | Event) {\n clearTimeout(closeTimer);\n closeTimer = setTimeout(\n () => {\n clearTimeout(closeTimer);\n if ((e.target as HTMLElement)?.getAttribute('handle-closed') === 'false') {\n return;\n }\n const isContains = isElementInside(e.target as Element, ref);\n\n if ((open() && !isContains) || (isContains && e.type !== 'mousedown')) {\n openChange(false);\n }\n },\n local.trigger === 'hover' ? 300 : 0,\n );\n }\n let portalTimer: NodeJS.Timeout | undefined;\n const showPortal = function (e?: Event): void {\n clearTimeout(portalTimer);\n portalTimer = setTimeout(() => {\n clearTimeout(portalTimer);\n if (!ref || !childRef || (!e && local.trigger === 'contextMenu')) {\n return;\n }\n if (e?.type === 'scroll' && local.trigger === 'contextMenu') {\n openChange(false);\n return;\n }\n const elRect = childRef!.getBoundingClientRect();\n const portalRect = ref!.getBoundingClientRect();\n const offsetX = portalRect.width / 2 - elRect.width / 2;\n const margin = window.innerHeight - elRect.bottom;\n const _placement = local.placement;\n\n const _isBottom =\n (!_placement?.startsWith('top') &&\n margin > ref!.offsetHeight * 0.8 &&\n margin > elRect.top) ||\n _placement?.startsWith('bottom');\n const arrowHeight = local.arrow ? 8 : 4;\n const _posi: Posi = {};\n\n switch (local.placement) {\n case 'bottomLeft':\n case 'left':\n case 'topLeft':\n _posi.left = elRect.left;\n _posi['--x'] = -portalRect.width / 2 + 16;\n break;\n case 'bottomRight':\n case 'right':\n case 'topRight':\n _posi.left = elRect.right - portalRect.width;\n _posi['--x'] = portalRect.width / 2 - 16;\n break;\n case 'bottom':\n case 'top':\n default:\n _posi.left = Math.abs(offsetX > elRect.left ? elRect.left : elRect.left - offsetX);\n _posi['--x'] = -(_posi.left - elRect.left + offsetX);\n break;\n }\n if (_isBottom) {\n _posi.top = elRect.bottom + arrowHeight;\n } else {\n _posi.bottom = window.innerHeight - elRect.top + arrowHeight;\n }\n setPosi((prev) => {\n return isEqual(prev, _posi) ? prev : _posi;\n });\n setUp((prev) => {\n return prev === !_isBottom ? prev : !_isBottom;\n });\n }, 32);\n };\n\n function handleOpen(e: MouseEvent) {\n clearTimeout(closeTimer);\n e.stopPropagation();\n if (local.trigger === 'contextMenu' && e.type === 'contextmenu') {\n e.preventDefault();\n setPosi((prev) => ({\n ...prev,\n left: e.clientX,\n top: e.clientY,\n ['--x']: -(ref?.getBoundingClientRect().width || 0) / 2 + 16,\n }));\n }\n openChange(true);\n }\n\n const container = createMemo(() => {\n if (isFunction(local.getPopupContainer)) {\n return local.getPopupContainer(childRef);\n }\n return document.body;\n });\n const childrenProps = createMemo(() => {\n const _props: Partial<Record<keyof EventMap, void>> = {};\n\n const openEvent: EventMap = {\n click: 'onMouseDown',\n hover: 'onMouseEnter',\n contextMenu: 'onContextMenu',\n none: null,\n };\n const closeEvent: EventMap = {\n hover: 'onMouseLeave',\n click: null,\n contextMenu: null,\n none: null,\n };\n\n const openFn = openEvent[local.trigger];\n const closeFn = closeEvent[local.trigger];\n\n Object.assign(\n _props,\n openFn && {\n [openFn]: handleOpen,\n },\n closeFn && {\n [closeFn]: close,\n },\n );\n\n return _props;\n });\n\n const portalStyle = createMemo(() => {\n const p = posi();\n\n // max-block-size: calc(100vb - ${(up() ? p.bottom : p.top) || 0}px);\n return `.portal {${Object.keys(p)\n .map((k) => `${k}:${p[k as keyof Posi]}px;`)\n .join('')}z-index: 1;}`;\n });\n const portalCls = createMemo(() => {\n return cx(\n 'portal',\n local.arrow && 'arrow',\n `${open() ? 'in' : 'out'}-${up() ? 'up' : 'down'}`,\n local.size,\n local.popupClass,\n );\n });\n const hostStyle = createMemo(() => {\n return `:host {--popover-bg: ${\n isDark() ? '#1f1f1f' : 'var(--component-bg)'\n };--popover-shadow-color: rgb(0 0 0 / 5%);}`;\n });\n\n createEffect(() => {\n if (open()) {\n showPortal();\n\n window.addEventListener('scroll', showPortal, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n window.removeEventListener('scroll', showPortal, false);\n });\n });\n onMount(() => {\n if (local.trigger !== 'none') {\n document.documentElement.addEventListener('mousedown', close, false);\n }\n });\n onCleanup(() => {\n clearTimeout(closeTimer);\n document.documentElement.removeEventListener('mousedown', close, false);\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {popoverCss}\n {css(local.css)}\n </style>\n <span ref={childRef} class={cx('popover', local.size, local.class)} {...childrenProps()}>\n {local.children}\n </span>\n <Show when={open() !== null || !local.destroyInactive}>\n <Portal useShadow mount={container()}>\n <style>\n {baseStyle()}\n {portalCss}\n {hostStyle()}\n {portalStyle()}\n {width()}\n {css(local.popupCss)}\n </style>\n <div ref={ref} onAnimationEnd={exit} class={portalCls()} {...childrenProps()}>\n <Show when={local.content} fallback={<n-empty />}>\n {local.content as JSX.Element}\n </Show>\n </div>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport type PopoverElement = CustomElement<PopoverProps, 'onOpenChange'>;\n\nexport const defaultProps = {\n class: void 0,\n css: void 0,\n content: void 0,\n getPopupContainer: void 0,\n trigger: void 0,\n open: void 0,\n onOpenChange: void 0,\n popupClass: void 0,\n popupCss: void 0,\n destroyInactive: true,\n disabled: void 0,\n arrow: void 0,\n placement: void 0,\n dropdownMatchSelectWidth: void 0,\n};\ncustomElement<PopoverProps>('n-popover', defaultProps, (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onOpenChange(next: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: next,\n }),\n );\n },\n children: [...el.childNodes.values()],\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return createComponent(Popover, props);\n});\nexport default Popover;\n"],"names":["TriggerOption","Placement","defaultProps","Popover","props","ref","childRef","closeTimer","portalTimer","isDark","baseStyle","theme","mp","mergeProps","trigger","local","splitProps","open","setOpen","createSignal","posi","setPosi","up","setUp","width","setWidth","openChange","next","disabled","onOpenChange","exit","close","e","clearTimeout","setTimeout","target","getAttribute","isContains","isElementInside","type","createEffect","dropdownMatchSelectWidth","offsetWidth","showPortal","elRect","getBoundingClientRect","portalRect","offsetX","margin","window","innerHeight","bottom","_placement","placement","_isBottom","startsWith","offsetHeight","top","arrowHeight","arrow","_posi","left","right","Math","abs","prev","isEqual","handleOpen","stopPropagation","preventDefault","clientX","clientY","container","createMemo","isFunction","getPopupContainer","document","body","childrenProps","_props","openFn","openEvent","click","hover","contextMenu","none","closeFn","closeEvent","Object","assign","portalStyle","p","keys","map","k","join","portalCls","cx","size","popupClass","hostStyle","addEventListener","passive","passiveSupported","onCleanup","removeEventListener","onMount","documentElement","popoverCss","css","class","children","Show","destroyInactive","Portal","portalCss","popupCss","content","bottomLeft","bottomRight","topLeft","topRight","customElement","_","opt","el","element","dispatchEvent","CustomEvent","detail","childNodes","values","removeAttribute","createComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../components/popover/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n splitProps,\n} from 'solid-js';\nimport { isElementInside, isEqual, isFunction, passiveSupported } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { Portal } from 'solid-js/web';\nimport { popoverCss, portalCss } from './style';\nimport '../empty';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement } from '..';\n\nexport interface PopoverProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n content?: (() => JSX.Element) | JSX.Element;\n /** 挂载到指定的元素,值为一个返回对应 DOM 元素 默认 document.body */\n getPopupContainer?: (node?: HTMLElement | null) => HTMLElement;\n /** 触发行为\n * @default 'hover'\n */\n trigger?: keyof typeof TriggerOption;\n /** 打开内容气泡 */\n open?: boolean | null;\n /** 内容打开关闭时的回调方法 */\n onOpenChange?: (open: boolean | null) => void;\n /** 气泡的自定义类名 */\n popupClass?: string;\n /** 气泡的自定义样式表 */\n popupCss?: string;\n /** 关闭后是否销毁 */\n destroyInactive?: boolean;\n /** 不可用状态 */\n disabled?: boolean;\n /** 添加一个箭头显示 */\n arrow?: boolean;\n /** 指定气泡显示的方向 */\n placement?: keyof typeof Placement;\n /** 气泡宽度与触发dom一致 */\n dropdownMatchSelectWidth?: boolean;\n /** 尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n children?: JSX.Element;\n}\n\nexport enum TriggerOption {\n /** 鼠标移入 */\n hover = 'hover',\n /** 点击 */\n click = 'click',\n /** 右键 */\n contextMenu = 'contextMenu',\n /** 无 */\n none = 'none',\n}\n\nexport enum Placement {\n /** 左下 */\n bottomLeft = 'bottomLeft',\n /** 下 */\n bottom = 'bottom',\n /** 右下 */\n bottomRight = 'bottomRight',\n /** 左上 */\n topLeft = 'topLeft',\n /** 上 */\n top = 'top',\n /** 右上 */\n topRight = 'topRight',\n /** 左 */\n left = 'left',\n /** 右 */\n right = 'right',\n}\n\ntype Posi = {\n left?: number;\n top?: number;\n right?: number;\n bottom?: number;\n '--x'?: number;\n};\n\ntype EventMap = {\n click: string | null;\n hover: string | null;\n contextMenu: string | null;\n none: null;\n [key: string]: string | null;\n};\nfunction Popover(props: PopoverProps) {\n const { isDark, baseStyle } = theme;\n const mp = mergeProps(\n {\n trigger: 'hover',\n },\n props,\n );\n const [local] = splitProps(mp, [\n 'class',\n 'css',\n 'popupClass',\n 'popupCss',\n 'size',\n 'trigger',\n 'open',\n 'disabled',\n 'onOpenChange',\n 'dropdownMatchSelectWidth',\n 'destroyInactive',\n 'arrow',\n 'placement',\n 'getPopupContainer',\n 'children',\n 'content',\n ]);\n let ref: HTMLDivElement | undefined;\n let childRef: HTMLSpanElement | undefined;\n let closeTimer: NodeJS.Timeout | undefined;\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [posi, setPosi] = createSignal<Posi>({});\n const [up, setUp] = createSignal<boolean>(false);\n const [width, setWidth] = createSignal('');\n\n createEffect(() => {\n if (local.open !== void 0) {\n setOpen(local.open);\n }\n });\n function openChange(next: boolean | null) {\n if (!local.disabled) {\n if (local.onOpenChange) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n function exit() {\n if (open() === false) {\n setOpen(null);\n openChange(null);\n }\n }\n createEffect(() => {\n if (open() && local.dropdownMatchSelectWidth && childRef) {\n setWidth(`.portal {width: ${childRef.offsetWidth}px;}`);\n }\n });\n\n function close(e: MouseEvent | Event) {\n clearTimeout(closeTimer);\n closeTimer = setTimeout(\n () => {\n clearTimeout(closeTimer);\n if ((e.target as HTMLElement)?.getAttribute('handle-closed') === 'false') {\n return;\n }\n const isContains = isElementInside(e.target as Element, ref);\n\n if ((open() && !isContains) || (isContains && e.type !== 'mousedown')) {\n openChange(false);\n }\n },\n local.trigger === 'hover' ? 300 : 0,\n );\n }\n let portalTimer: NodeJS.Timeout | undefined;\n const showPortal = function (e?: Event): void {\n clearTimeout(portalTimer);\n portalTimer = setTimeout(() => {\n clearTimeout(portalTimer);\n if (!ref || !childRef || (!e && local.trigger === 'contextMenu')) {\n return;\n }\n if (e?.type === 'scroll' && local.trigger === 'contextMenu') {\n openChange(false);\n return;\n }\n const elRect = childRef!.getBoundingClientRect();\n const portalRect = ref!.getBoundingClientRect();\n const offsetX = portalRect.width / 2 - elRect.width / 2;\n const margin = window.innerHeight - elRect.bottom;\n const _placement = local.placement;\n\n const _isBottom =\n (!_placement?.startsWith('top') &&\n margin > ref!.offsetHeight * 0.8 &&\n margin > elRect.top) ||\n _placement?.startsWith('bottom');\n const arrowHeight = local.arrow ? 8 : 4;\n const _posi: Posi = {};\n\n switch (local.placement) {\n case 'bottomLeft':\n case 'left':\n case 'topLeft':\n _posi.left = elRect.left;\n _posi['--x'] = -portalRect.width / 2 + 16;\n break;\n case 'bottomRight':\n case 'right':\n case 'topRight':\n _posi.left = elRect.right - portalRect.width;\n _posi['--x'] = portalRect.width / 2 - 16;\n break;\n case 'bottom':\n case 'top':\n default:\n _posi.left = Math.abs(offsetX > elRect.left ? elRect.left : elRect.left - offsetX);\n _posi['--x'] = -(_posi.left - elRect.left + offsetX);\n break;\n }\n if (_isBottom) {\n _posi.top = elRect.bottom + arrowHeight;\n } else {\n _posi.bottom = window.innerHeight - elRect.top + arrowHeight;\n }\n setPosi((prev) => {\n return isEqual(prev, _posi) ? prev : _posi;\n });\n setUp((prev) => {\n return prev === !_isBottom ? prev : !_isBottom;\n });\n }, 32);\n };\n\n function handleOpen(e: MouseEvent) {\n clearTimeout(closeTimer);\n e.stopPropagation();\n if (local.trigger === 'contextMenu' && e.type === 'contextmenu') {\n e.preventDefault();\n setPosi((prev) => ({\n ...prev,\n left: e.clientX,\n top: e.clientY,\n ['--x']: -(ref?.getBoundingClientRect().width || 0) / 2 + 16,\n }));\n }\n openChange(true);\n }\n\n const container = createMemo(() => {\n if (isFunction(local.getPopupContainer)) {\n return local.getPopupContainer(childRef);\n }\n return document.body;\n });\n const childrenProps = createMemo(() => {\n const _props: Partial<Record<keyof EventMap, void>> = {};\n\n const openEvent: EventMap = {\n click: 'onMouseDown',\n hover: 'onMouseEnter',\n contextMenu: 'onContextMenu',\n none: null,\n };\n const closeEvent: EventMap = {\n hover: 'onMouseLeave',\n click: null,\n contextMenu: null,\n none: null,\n };\n\n const openFn = openEvent[local.trigger];\n const closeFn = closeEvent[local.trigger];\n\n Object.assign(\n _props,\n openFn && {\n [openFn]: handleOpen,\n },\n closeFn && {\n [closeFn]: close,\n },\n );\n\n return _props;\n });\n\n const portalStyle = createMemo(() => {\n const p = posi();\n\n // max-block-size: calc(100vb - ${(up() ? p.bottom : p.top) || 0}px);\n return `.portal {${Object.keys(p)\n .map((k) => `${k}:${p[k as keyof Posi]}px;`)\n .join('')}z-index: 1;}`;\n });\n const portalCls = createMemo(() => {\n return cx(\n 'portal',\n local.arrow && 'arrow',\n `${open() ? 'in' : 'out'}-${up() ? 'up' : 'down'}`,\n local.size,\n local.popupClass,\n );\n });\n const hostStyle = createMemo(() => {\n return `:host {--popover-bg: ${\n isDark() ? '#1f1f1f' : 'var(--component-bg)'\n };--popover-shadow-color: rgb(0 0 0 / 5%);}`;\n });\n\n createEffect(() => {\n if (open()) {\n showPortal();\n\n window.addEventListener('scroll', showPortal, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n window.removeEventListener('scroll', showPortal, false);\n });\n });\n onMount(() => {\n if (local.trigger !== 'none') {\n document.documentElement.addEventListener('mousedown', close, false);\n }\n });\n onCleanup(() => {\n clearTimeout(closeTimer);\n document.documentElement.removeEventListener('mousedown', close, false);\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {popoverCss}\n {css(local.css)}\n </style>\n <span ref={childRef} class={cx('popover', local.size, local.class)} {...childrenProps()}>\n {local.children}\n </span>\n <Show when={open() !== null || !local.destroyInactive}>\n <Portal useShadow mount={container()}>\n <style>\n {baseStyle()}\n {portalCss}\n {hostStyle()}\n {portalStyle()}\n {width()}\n {css(local.popupCss)}\n </style>\n <div ref={ref} onAnimationEnd={exit} class={portalCls()} {...childrenProps()}>\n <Show when={local.content} fallback={<n-empty />}>\n {local.content as JSX.Element}\n </Show>\n </div>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport type PopoverElement = CustomElement<PopoverProps, 'onOpenChange'>;\n\nexport const defaultProps = {\n class: void 0,\n css: void 0,\n content: void 0,\n getPopupContainer: void 0,\n trigger: void 0,\n open: void 0,\n onOpenChange: void 0,\n popupClass: void 0,\n popupCss: void 0,\n destroyInactive: true,\n disabled: void 0,\n arrow: void 0,\n placement: void 0,\n dropdownMatchSelectWidth: void 0,\n};\ncustomElement<PopoverProps>('n-popover', defaultProps, (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onOpenChange(next: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: next,\n }),\n );\n },\n children: [...el.childNodes.values()],\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return createComponent(Popover, props);\n});\nexport default Popover;\n"],"names":["TriggerOption","Placement","defaultProps","Popover","props","ref","childRef","closeTimer","portalTimer","isDark","baseStyle","theme","mp","mergeProps","trigger","local","splitProps","open","setOpen","createSignal","posi","setPosi","up","setUp","width","setWidth","openChange","next","disabled","onOpenChange","exit","close","e","clearTimeout","setTimeout","target","getAttribute","isContains","isElementInside","type","createEffect","dropdownMatchSelectWidth","offsetWidth","showPortal","elRect","getBoundingClientRect","portalRect","offsetX","margin","window","innerHeight","bottom","_placement","placement","_isBottom","startsWith","offsetHeight","top","arrowHeight","arrow","_posi","left","right","Math","abs","prev","isEqual","handleOpen","stopPropagation","preventDefault","clientX","clientY","container","createMemo","isFunction","getPopupContainer","document","body","childrenProps","_props","openFn","openEvent","click","hover","contextMenu","none","closeFn","closeEvent","Object","assign","portalStyle","p","keys","map","k","join","portalCls","cx","size","popupClass","hostStyle","addEventListener","passive","passiveSupported","onCleanup","removeEventListener","onMount","documentElement","popoverCss","css","class","children","Show","destroyInactive","Portal","portalCss","popupCss","content","customElement","_","opt","el","element","dispatchEvent","CustomEvent","detail","childNodes","values","removeAttribute","createComponent"],"mappings":"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"}
|
package/lib/switch/index.d.ts
CHANGED
package/lib/switch/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/switch/index.tsx"],"sourcesContent":["import { createComponent, createEffect, createSignal, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface SwitchProps {\n /** 自定义类名 */\n class?: string;\n /**
|
|
1
|
+
{"version":3,"sources":["../../components/switch/index.tsx"],"sourcesContent":["import { createComponent, createEffect, createSignal, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface SwitchProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 值 */\n checked?: boolean;\n /** 只读 */\n disabled?: boolean;\n /** 设置 为 true 时的文案 */\n checkedText?: string;\n /** 设置 为 false 时的文案 */\n unCheckedText?: string;\n /** 加载状态 */\n loading?: boolean;\n /** 值修改时的回调方法 */\n onChange?: (val: boolean) => void;\n}\n\nexport type SwitchElement = CustomElement<SwitchProps>;\n\nfunction Switch(props: SwitchProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal(false);\n\n function change() {\n if (!props.disabled && !props.loading) {\n setValue((prev) => !prev);\n props.onChange?.(value());\n }\n }\n\n function onKeyUp({ key }: { key: string }) {\n if (key === 'Enter') {\n change();\n }\n }\n\n createEffect(() => {\n setValue(!!props.checked);\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(props.css)}\n </style>\n <span\n class={cx('switch', props.class, value() && 'checked', props.loading && 'loading')}\n text-on={props.checkedText}\n text-off={props.unCheckedText}\n aria-disabled={props.disabled}\n onClick={change}\n onKeyUp={onKeyUp}\n tabindex={props.disabled || props.loading ? -1 : 0}\n />\n </>\n );\n}\n\ncustomElement<SwitchProps>(\n 'n-switch',\n {\n class: void 0,\n css: void 0,\n checked: void 0,\n disabled: void 0,\n checkedText: void 0,\n unCheckedText: void 0,\n loading: false,\n onChange: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n checked: el.checked,\n disabled: el.disabled,\n checkedText: el.checkedText,\n unCheckedText: el.unCheckedText,\n loading: el.loading,\n onChange(val: boolean) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return createComponent(Switch, props);\n },\n);\nexport default Switch;\n"],"names":["Switch","props","baseStyle","theme","value","setValue","createSignal","change","disabled","loading","prev","onChange","onKeyUp","key","createEffect","checked","style","css","cx","class","checkedText","unCheckedText","customElement","_","opt","el","element","mergeProps","val","dispatchEvent","CustomEvent","detail","removeAttribute","createComponent"],"mappings":"kGA4GA,+CAAA,oGA5GwE,sBAChD,yBACM,2BACR,sCACJ,8FAwBlB,SAASA,EAAOC,CAAkB,EAChC,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CACrB,CAACC,EAAOC,EAAS,CAAGC,GAAAA,cAAY,EAAC,CAAA,GAEvC,SAASC,IACFN,EAAMO,QAAQ,EAAKP,EAAMQ,OAAO,GACnCJ,EAAS,AAACK,GAAS,CAACA,GACpBT,EAAMU,QAAQ,GAAGP,KAErB,CAEA,SAASQ,EAAQ,CAAEC,IAAAA,CAAG,CAAmB,EAC3B,UAARA,GACFN,GAEJ,CAMA,MAJAO,GAAAA,cAAY,EAAC,KACXT,EAAS,CAAC,CAACJ,EAAMc,OAAO,CAC1B,yCAKOb,uBACAc,OAAK,0BACLC,GAAAA,KAAG,EAAChB,EAAMgB,GAAG,qEAQLL,uCADAL,6BAJFW,GAAAA,IAAE,EAAC,SAAUjB,EAAMkB,KAAK,CAAEf,KAAW,UAAWH,EAAMQ,OAAO,EAAI,aAC/DR,EAAMmB,WAAW,GAChBnB,EAAMoB,aAAa,GACdpB,EAAMO,QAAQ,GAGnBP,EAAMO,QAAQ,EAAIP,EAAMQ,OAAO,CAAG,GAAK,kVAIzD,CAEAa,GAAAA,eAAa,EACX,WACA,CACEH,MAAO,KAAK,EACZF,IAAK,KAAK,EACVF,QAAS,KAAK,EACdP,SAAU,KAAK,EACfY,YAAa,KAAK,EAClBC,cAAe,KAAK,EACpBZ,QAAS,CAAA,EACTE,SAAU,KAAK,CACjB,EACA,CAACY,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBzB,EAAQ0B,GAAAA,YAAU,EACtB,CACEV,IAAKQ,EAAGR,GAAG,CACXF,QAASU,EAAGV,OAAO,CACnBP,SAAUiB,EAAGjB,QAAQ,CACrBY,YAAaK,EAAGL,WAAW,CAC3BC,cAAeI,EAAGJ,aAAa,CAC/BZ,QAASgB,EAAGhB,OAAO,CACnBE,SAASiB,CAAY,EACnBH,EAAGI,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQH,CACV,GAEJ,CACF,EACAL,GAMF,MAHAT,GAAAA,cAAY,EAAC,KACXW,EAAGO,eAAe,CAAC,MACrB,GACOC,GAAAA,iBAAe,EAACjC,EAAQC,EACjC,SAEF,EAAeD"}
|
package/lib/table/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var e,t,r,n;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return x}});const a=require("@swc/helpers/_/_interop_require_default"),l=require("solid-js/web"),i=require("solid-js"),o=/*#__PURE__*/a._(require("@moneko/common/lib/isObject")),s=/*#__PURE__*/a._(require("@moneko/common/lib/isString")),c=/*#__PURE__*/a._(require("@moneko/common/lib/isUndefined")),u=require("@moneko/css"),p=require("solid-element"),m=require("./styles");require("../pagination");const d=/*#__PURE__*/a._(require("../theme")),g=/*#__PURE__*/(0,l.template)("<span>"),h=/*#__PURE__*/(0,l.template)("<style>"),f=/*#__PURE__*/(0,l.template)('<caption class="table-title"><slot name="title">'),v=/*#__PURE__*/(0,l.template)('<th class="table-cell">'),b=/*#__PURE__*/(0,l.template)('<tfoot class="table-foot"><tr>'),y=/*#__PURE__*/(0,l.template)("<table><thead><tr></tr></thead><tbody>"),_=/*#__PURE__*/(0,l.template)('<n-pagination class="table-pagination">',!0,!1),w=/*#__PURE__*/(0,l.template)("<th>"),S=/*#__PURE__*/(0,l.template)("<tr>"),$=/*#__PURE__*/(0,l.template)('<span class="empty-val">'),C=/*#__PURE__*/(0,l.template)("<td>"),q={page:1,pageSize:20,total:0,totalText:void 0,size:void 0};function P(e){let{baseStyle:t}=d.default,[r,n]=(0,i.splitProps)(e,["class","css","loading","summary","summaryText","columns","data","emptyVal","title","align","char","charoff","valign","pagination","size"]),[a]=(0,i.splitProps)(r,["align","char","charoff","valign"]),[p,P]=(0,i.createSignal)(!1),[x,z]=(0,i.createSignal)(1),[j,k]=(0,i.createSignal)(20),[O,T]=(0,i.createSignal)(0);function M(e){return{width:e.width,align:e.align,valign:e.valign,char:e.char,charoff:e.charoff,colspan:e.colspan,rowspan:e.rowspan}}(0,i.createEffect)(()=>{(0,i.batch)(()=>{r.pagination&&(z(r.pagination.page||1),k(r.pagination.pageSize||20),T(r.pagination.total||0))})});let E=(0,i.createMemo)(()=>Object.assign(q,r.pagination)),F=(0,i.createMemo)(()=>{let e=[],t=!1;for(let n in r.columns)if(Object.prototype.hasOwnProperty.call(r.columns,n)){let a=r.columns[n],i=Object.assign({key:n,originKey:n,label:a.toString()},(0,o.default)(a)&&{label:"order"===a.type&&"序号"||n,...a});"order"===i.type&&(t=!0,i.render=function(e,t,r){return(()=>{let e=g();return(0,l.insert)(e,()=>(x()-1)*j()+r+1),e})()}),e.push(i)}return(0,i.untrack)(p)!==t&&P(t),e});function A(e){r.pagination&&(z(e.detail[0]),k(e.detail[1]),r.pagination.onChange?.(...e.detail))}return[(()=>{let e=h();return(0,l.insert)(e,t,null),(0,l.insert)(e,m.styles,null),(0,l.insert)(e,()=>(0,u.css)(r.css),null),e})(),(()=>{let e=y(),t=e.firstChild,o=t.firstChild,m=t.nextSibling;return(0,l.spread)(e,(0,l.mergeProps)(n,{get class(){return(0,u.cx)("table",r.size)},part:"table"}),!1,!0),(0,l.insert)(e,(0,l.createComponent)(i.Show,{get when(){return r.title},get children(){let e=f(),t=e.firstChild;return t._$owner=(0,l.getOwner)(),(0,l.insert)(t,()=>r.title),e}}),t),(0,l.spread)(t,(0,l.mergeProps)(a,{class:"table-head"}),!1,!0),(0,l.insert)(o,(0,l.createComponent)(i.For,{get each(){return F()},children:e=>{let t=M(e);return(()=>{let r=w();return(0,l.spread)(r,(0,l.mergeProps)(t,{class:"table-cell"}),!1,!0),(0,l.insert)(r,()=>e.label),r})()}})),(0,l.spread)(m,(0,l.mergeProps)(a,{class:"table-body"}),!1,!0),(0,l.insert)(m,(0,l.createComponent)(i.For,{get each(){return r.data},children:(e,t)=>(()=>{let n=S();return(0,l.insert)(n,(0,l.createComponent)(i.For,{get each(){return F()},children:n=>{let a=M(n),o=(0,i.createMemo)(()=>{if("order"===n.type){let e=E();return(e.page-1)*e.pageSize+t()+1}let a=e[n.key],i=(0,c.default)(a)||null===a;return i?(()=>{let e=$();return(0,l.insert)(e,()=>r.emptyVal),e})():a});return(()=>{let r=C();return(0,l.spread)(r,(0,l.mergeProps)(a,{class:"table-cell"}),!1,!0),(0,l.insert)(r,(0,l.createComponent)(i.Show,{get when(){return n.render},get fallback(){return(0,l.createComponent)(o,{})},get children(){return n.render?.(e[n.key],e,t())}})),r})()}})),n})()})),(0,l.insert)(e,(0,l.createComponent)(i.Show,{get when(){return r.summary?.length},get children(){let e=b(),t=e.firstChild;return(0,l.spread)(e,a,!1,!0),(0,l.insert)(t,(0,l.createComponent)(i.Show,{get when(){return p()},get children(){let e=v();return(0,l.spread)(e,(0,l.mergeProps)(()=>M(F()[0])),!1,!0),(0,l.insert)(e,()=>r.summaryText),e}}),null),(0,l.insert)(t,(0,l.createComponent)(i.For,{get each(){return F().filter(e=>!e.type||!["order"].includes(e.type))},children:e=>{let t=M(e),n=(0,i.createMemo)(()=>{if(r.data?.length&&r.summary?.includes(e.originKey)){var t,n;return t=r.data,n=e.key,t.reduce(function(e,t){let r=t[n];return(0,s.default)(r)||(0,c.default)(r)||null===r?e:e+t[n]},0)}return null});return(()=>{let e=C();return(0,l.spread)(e,(0,l.mergeProps)(t,{class:"table-cell"}),!1,!0),(0,l.insert)(e,n),e})()}}),null),e}}),null),e})(),(0,l.createComponent)(i.Show,{get when(){return r.pagination},get children(){let e=_();return(0,l.addEventListener)(e,"change",A),e._$owner=(0,l.getOwner)(),(0,l.effect)(t=>{let n=x(),a=j(),l=O(),i=E().totalText,o=E().size||r.size;return n!==t._v$&&(e.page=t._v$=n),a!==t._v$2&&(e.pageSize=t._v$2=a),l!==t._v$3&&(e.total=t._v$3=l),i!==t._v$4&&(e.totalText=t._v$4=i),o!==t._v$5&&(e.size=t._v$5=o),t},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0}),e}})]}(r=e||(e={})).left="left",r.right="right",r.center="center",r.justify="justify",r.char="char",(n=t||(t={})).top="top",n.middle="middle",n.bottom="bottom",n.baseline="baseline",(0,p.customElement)("n-table",{class:void 0,css:void 0,loading:!1,columns:{},data:[],emptyVal:"-",title:void 0,char:void 0,charoff:void 0,align:"left",valign:"middle",summary:void 0,summaryText:"合计",pagination:void 0,size:void 0},(e,t)=>{let r=t.element,n=(0,i.mergeProps)({css:r.css,columns:r.columns,data:r.data,pagination:r.pagination,summary:r.summary,summaryText:r.summaryText},e,{title:!!r.querySelector("[slot='title']")||e.title});return(0,i.createEffect)(()=>{r.removeAttribute("css"),r.removeAttribute("title"),r.removeAttribute("data")}),(0,i.createComponent)(P,n)});const x=P;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|