neko-ui 2.8.0 → 2.8.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/back-top/index.js +1 -1
- package/es/back-top/index.js.map +1 -1
- package/es/back-top/style.js +4 -1
- package/es/back-top/style.js.map +1 -1
- package/es/button/index.d.ts +1 -0
- package/es/button/index.js +1 -1
- package/es/button/index.js.map +1 -1
- package/es/capture-screen/index.js +1 -1
- package/es/capture-screen/index.js.map +1 -1
- package/es/carousel/index.js +1 -1
- package/es/carousel/index.js.map +1 -1
- package/es/checkbox/index.js +1 -1
- package/es/checkbox/index.js.map +1 -1
- package/es/code/index.js +1 -1
- package/es/code/index.js.map +1 -1
- package/es/color-palette/index.js +1 -1
- package/es/color-palette/index.js.map +1 -1
- package/es/color-picker/index.js +1 -1
- package/es/color-picker/index.js.map +1 -1
- package/es/cron/index.js +1 -1
- package/es/cron/index.js.map +1 -1
- package/es/date-picker/date.js +1 -1
- package/es/date-picker/date.js.map +1 -1
- package/es/date-picker/dayjs.js +1 -1
- package/es/date-picker/dayjs.js.map +1 -1
- package/es/date-picker/index.js +1 -1
- package/es/date-picker/index.js.map +1 -1
- package/es/date-picker/month.js +1 -1
- package/es/date-picker/month.js.map +1 -1
- package/es/date-picker/panel.js +1 -1
- package/es/date-picker/panel.js.map +1 -1
- package/es/date-picker/year.js +1 -1
- package/es/date-picker/year.js.map +1 -1
- package/es/dropdown/index.js +1 -1
- package/es/dropdown/index.js.map +1 -1
- package/es/img/index.d.ts +9 -1
- package/es/img/index.js +1 -1
- package/es/img/index.js.map +1 -1
- package/es/img/style.js +37 -2
- package/es/img/style.js.map +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/input/index.js +1 -1
- package/es/input/index.js.map +1 -1
- package/es/input-number/index.js +2 -2
- package/es/input-number/index.js.map +1 -1
- package/es/md/index.js +1 -1
- package/es/md/index.js.map +1 -1
- package/es/menu/index.js +1 -1
- package/es/menu/index.js.map +1 -1
- package/es/modal/index.js +1 -1
- package/es/modal/index.js.map +1 -1
- package/es/notification/notification.js +1 -1
- package/es/notification/notification.js.map +1 -1
- package/es/pagination/index.js +1 -1
- package/es/pagination/index.js.map +1 -1
- package/es/popover/index.js +1 -1
- package/es/popover/index.js.map +1 -1
- package/es/provider/index.js +1 -1
- package/es/provider/index.js.map +1 -1
- package/es/radio/index.js +1 -1
- package/es/radio/index.js.map +1 -1
- package/es/segmented/index.js +3 -3
- package/es/segmented/index.js.map +1 -1
- package/es/select/index.js +1 -1
- package/es/select/index.js.map +1 -1
- package/es/skeleton/index.js +3 -3
- package/es/skeleton/index.js.map +1 -1
- package/es/spin/index.js +5 -4
- package/es/spin/index.js.map +1 -1
- package/es/switch/index.js +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/tabs/index.d.ts +5 -0
- package/es/tabs/index.js +2 -2
- package/es/tabs/index.js.map +1 -1
- package/es/tag/index.js +3 -3
- package/es/tag/index.js.map +1 -1
- package/es/theme/index.d.ts +1 -1
- package/es/theme/index.js +1 -76
- package/es/theme/index.js.map +1 -1
- package/es/tree/index.js +1 -1
- package/es/tree/index.js.map +1 -1
- package/es/tree/register.js +1 -1
- package/es/tree/register.js.map +1 -1
- package/es/tree/type.d.ts +3 -1
- package/es/typography/index.js +3 -3
- package/es/typography/index.js.map +1 -1
- package/lib/back-top/index.js +1 -1
- package/lib/back-top/index.js.map +1 -1
- package/lib/back-top/style.js +4 -1
- package/lib/back-top/style.js.map +1 -1
- package/lib/button/index.d.ts +1 -0
- package/lib/button/index.js +1 -1
- package/lib/button/index.js.map +1 -1
- package/lib/capture-screen/index.js +1 -1
- package/lib/capture-screen/index.js.map +1 -1
- package/lib/carousel/index.js +1 -1
- package/lib/carousel/index.js.map +1 -1
- package/lib/checkbox/index.js +1 -1
- package/lib/checkbox/index.js.map +1 -1
- package/lib/code/index.js +1 -1
- package/lib/code/index.js.map +1 -1
- package/lib/color-palette/index.js +1 -1
- package/lib/color-palette/index.js.map +1 -1
- package/lib/color-picker/index.js +1 -1
- package/lib/color-picker/index.js.map +1 -1
- package/lib/cron/index.js +1 -1
- package/lib/cron/index.js.map +1 -1
- package/lib/date-picker/date.js +1 -1
- package/lib/date-picker/date.js.map +1 -1
- package/lib/date-picker/dayjs.js +1 -1
- package/lib/date-picker/dayjs.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/panel.js +1 -1
- package/lib/date-picker/panel.js.map +1 -1
- package/lib/date-picker/year.js +1 -1
- package/lib/date-picker/year.js.map +1 -1
- package/lib/dropdown/index.js +1 -1
- package/lib/dropdown/index.js.map +1 -1
- package/lib/img/index.d.ts +9 -1
- package/lib/img/index.js +1 -1
- package/lib/img/index.js.map +1 -1
- package/lib/img/style.js +35 -0
- package/lib/img/style.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/input/index.js +1 -1
- package/lib/input/index.js.map +1 -1
- package/lib/input-number/index.js +1 -1
- package/lib/input-number/index.js.map +1 -1
- package/lib/md/index.js +1 -1
- package/lib/md/index.js.map +1 -1
- package/lib/menu/index.js +1 -1
- package/lib/menu/index.js.map +1 -1
- package/lib/modal/index.js +1 -1
- package/lib/modal/index.js.map +1 -1
- package/lib/notification/notification.js +1 -1
- package/lib/notification/notification.js.map +1 -1
- package/lib/pagination/index.js +1 -1
- package/lib/pagination/index.js.map +1 -1
- package/lib/popover/index.js +1 -1
- package/lib/popover/index.js.map +1 -1
- package/lib/provider/index.js +1 -1
- package/lib/provider/index.js.map +1 -1
- package/lib/radio/index.js +1 -1
- package/lib/radio/index.js.map +1 -1
- package/lib/segmented/index.js +1 -1
- package/lib/segmented/index.js.map +1 -1
- package/lib/select/index.js +1 -1
- package/lib/select/index.js.map +1 -1
- package/lib/skeleton/index.js +4 -4
- package/lib/skeleton/index.js.map +1 -1
- package/lib/spin/index.js +5 -4
- package/lib/spin/index.js.map +1 -1
- package/lib/switch/index.js +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/index.d.ts +5 -0
- package/lib/tabs/index.js +2 -2
- package/lib/tabs/index.js.map +1 -1
- package/lib/tag/index.js +3 -3
- package/lib/tag/index.js.map +1 -1
- package/lib/theme/index.d.ts +1 -1
- package/lib/theme/index.js +1 -76
- package/lib/theme/index.js.map +1 -1
- package/lib/tree/index.js +1 -1
- package/lib/tree/index.js.map +1 -1
- package/lib/tree/register.js +1 -1
- package/lib/tree/register.js.map +1 -1
- package/lib/tree/type.d.ts +3 -1
- package/lib/typography/index.js +1 -1
- package/lib/typography/index.js.map +1 -1
- package/package.json +11 -12
- package/umd/index.js +1 -1
package/lib/radio/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return f}});const e=require("solid-js/web"),t=require("solid-js"),i=require("@moneko/css"),l=require("solid-element"),a=require("./style"),n=require("../basic-config"),r=o(require("../get-options")),s=o(require("../theme"));function o(e){return e&&e.__esModule?e:{default:e}}const u=(0,e.template)("<style>"),d=(0,e.template)('<section part="box">'),c=(0,e.template)('<div part="item"><input class="radio" type="radio"><label class="label" part="label">');function v(l){let{baseStyle:o}=s.default,[v,f]=(0,t.createSignal)(l.defaultValue),b=(0,t.createMemo)(()=>Object.assign({},n.FieldName,l.fieldNames));function m(e){if(!l.disabled&&!e.disabled){let t=e[b().value];f(t),l.onChange?.(t)}}function p(e,t){"Enter"===t.key&&m(e)}let g=(0,t.createMemo)(()=>(0,r.default)(l.options,b()));return(0,t.createEffect)(()=>{f(l.value)}),[(()=>{let t=u();return(0,e.insert)(t,o,null),(0,e.insert)(t,a.style,null),(0,e.insert)(t,()=>(0,i.css)(l.css),null),t})(),(()=>{let a=d();return(0,e.insert)(a,(0,e.createComponent)(t.For,{get each(){return g()},children:t=>{let a=l.disabled||t.disabled,n=()=>{m(t)},r=b();return(()=>{let s=c(),o=s.firstChild,u=o.nextSibling;return(0,e.addEventListener)(s,"click",n,!0),(0,e.addEventListener)(s,"keyup",p.bind(null,t),!0),(0,e.setAttribute)(s,"tabindex",a?-1:0),(0,e.setAttribute)(s,"aria-disabled",a),(0,e.addEventListener)(o,"change",n),o.disabled=a,(0,e.setAttribute)(o,"tabindex",-1),(0,e.insert)(u,()=>t[r.label]),(0,e.effect)(a=>{let n=(0,i.cx)("item",t.class,t.status),r=l.name;return n!==a._v$&&(0,e.className)(s,a._v$=n),r!==a._v$2&&(0,e.setAttribute)(o,"name",a._v$2=r),a},{_v$:void 0,_v$2:void 0}),(0,e.effect)(()=>o.value=t[r.value]),(0,e.effect)(()=>o.checked=t[r.value]===v()),s})()}})),(0,e.effect)(()=>(0,e.className)(a,(0,i.cx)("box",l.layout,l.class))),a})()]}(0,l.customElement)("n-radio",{class:void 0,css:void 0,name:void 0,disabled:void 0,value:void 0,defaultValue:void 0,options:[],onChange:void 0,fieldNames:void 0,layout:void 0},(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return f}});const e=require("solid-js/web"),t=require("solid-js"),i=require("@moneko/css"),l=require("solid-element"),a=require("./style"),n=require("../basic-config"),r=o(require("../get-options")),s=o(require("../theme"));function o(e){return e&&e.__esModule?e:{default:e}}const u=(0,e.template)("<style>"),d=(0,e.template)('<section part="box">'),c=(0,e.template)('<div part="item"><input class="radio" type="radio"><label class="label" part="label">');function v(l){let{baseStyle:o}=s.default,[v,f]=(0,t.createSignal)(l.defaultValue),b=(0,t.createMemo)(()=>Object.assign({},n.FieldName,l.fieldNames));function m(e){if(!l.disabled&&!e.disabled){let t=e[b().value];f(t),l.onChange?.(t)}}function p(e,t){"Enter"===t.key&&m(e)}let g=(0,t.createMemo)(()=>(0,r.default)(l.options,b()));return(0,t.createEffect)(()=>{f(l.value)}),[(()=>{let t=u();return(0,e.insert)(t,o,null),(0,e.insert)(t,a.style,null),(0,e.insert)(t,()=>(0,i.css)(l.css),null),t})(),(()=>{let a=d();return(0,e.insert)(a,(0,e.createComponent)(t.For,{get each(){return g()},children:t=>{let a=l.disabled||t.disabled,n=()=>{m(t)},r=b();return(()=>{let s=c(),o=s.firstChild,u=o.nextSibling;return(0,e.addEventListener)(s,"click",n,!0),(0,e.addEventListener)(s,"keyup",p.bind(null,t),!0),(0,e.setAttribute)(s,"tabindex",a?-1:0),(0,e.setAttribute)(s,"aria-disabled",a),(0,e.addEventListener)(o,"change",n),o.disabled=a,(0,e.setAttribute)(o,"tabindex",-1),(0,e.insert)(u,()=>t[r.label]),(0,e.effect)(a=>{let n=(0,i.cx)("item",t.class,t.status),r=l.name;return n!==a._v$&&(0,e.className)(s,a._v$=n),r!==a._v$2&&(0,e.setAttribute)(o,"name",a._v$2=r),a},{_v$:void 0,_v$2:void 0}),(0,e.effect)(()=>o.value=t[r.value]),(0,e.effect)(()=>o.checked=t[r.value]===v()),s})()}})),(0,e.effect)(()=>(0,e.className)(a,(0,i.cx)("box",l.layout,l.class))),a})()]}(0,l.customElement)("n-radio",{class:void 0,css:void 0,name:void 0,disabled:void 0,value:void 0,defaultValue:void 0,options:[],onChange:void 0,fieldNames:void 0,layout:void 0},(i,l)=>{let a=l.element,n=(0,t.mergeProps)({layout:a.layout||"horizontal",onChange(e){a.dispatchEvent(new CustomEvent("change",{detail:e}))}},i);return(0,t.createEffect)(()=>{a.removeAttribute("options"),a.removeAttribute("field-names"),a.removeAttribute("css")}),(0,e.createComponent)(v,n)});const f=v;(0,e.delegateEvents)(["click","keyup"]);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/radio/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/radio/index.tsx"],"sourcesContent":["import { For,
|
|
1
|
+
{"version":3,"sources":["../../components/radio/index.tsx"],"sourcesContent":["import { For, createEffect, createMemo, createSignal, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport { FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme from '../theme';\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\n\nexport interface RadioOption extends Omit<BaseOption, 'icon'> {\n /** 值 */\n value?: string;\n}\n\nexport interface RadioProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** input[type=\"radio\"] 的 name 属性 */\n name?: string;\n /** 只读 */\n disabled?: boolean;\n /** 值 */\n value?: string;\n /** 默认值 */\n defaultValue?: string;\n /** 选项数据 */\n options?: (RadioOption | string)[];\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n /** 值修改时的回调方法 */\n onChange?(val: string): void;\n /** 选项排列方式\n * @default 'horizontal'\n */\n layout?: 'vertical' | 'horizontal';\n}\n\nfunction Radio(props: RadioProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal(props.defaultValue);\n const fieldNames = createMemo(() => Object.assign({}, FieldName, props.fieldNames));\n\n function onChange(item: RadioOption) {\n if (!props.disabled && !item.disabled) {\n const next = item[fieldNames().value]!;\n\n setValue(next);\n props.onChange?.(next);\n }\n }\n function onKeyUp(item: RadioOption, e: KeyboardEvent) {\n if (e.key === 'Enter') {\n onChange(item);\n }\n }\n const options = createMemo(() => {\n return getOptions(props.options, fieldNames());\n });\n\n createEffect(() => {\n setValue(props.value);\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(props.css)}\n </style>\n <section class={cx('box', props.layout, props.class)} part=\"box\">\n <For each={options()}>\n {(item) => {\n const readOnly = props.disabled || item.disabled;\n const handleChange = () => {\n onChange(item);\n };\n const fieldName = fieldNames();\n\n return (\n <div\n class={cx('item', item.class, item.status)}\n part=\"item\"\n tabindex={readOnly ? -1 : 0}\n aria-disabled={readOnly}\n onKeyUp={onKeyUp.bind(null, item)}\n onClick={handleChange}\n >\n <input\n class=\"radio\"\n type=\"radio\"\n name={props.name}\n value={item[fieldName.value]}\n disabled={readOnly}\n tabindex={-1}\n checked={item[fieldName.value] === value()}\n onChange={handleChange}\n />\n <label class=\"label\" part=\"label\">\n {item[fieldName.label]}\n </label>\n </div>\n );\n }}\n </For>\n </section>\n </>\n );\n}\n\nexport type RadioElement = CustomElement<RadioProps>;\n\ncustomElement<RadioProps>(\n 'n-radio',\n {\n class: void 0,\n css: void 0,\n name: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n options: [],\n onChange: void 0,\n fieldNames: void 0,\n layout: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n layout: el.layout || 'horizontal',\n onChange(next: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: next,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('options');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return <Radio {...props} />;\n },\n);\nexport default Radio;\n"],"names":["Radio","props","baseStyle","theme","value","setValue","createSignal","defaultValue","fieldNames","createMemo","Object","assign","FieldName","onChange","item","disabled","next","onKeyUp","e","key","options","getOptions","createEffect","style","css","For","readOnly","handleChange","fieldName","bind","label","cx","class","status","name","layout","customElement","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","detail","removeAttribute"],"rangeMappings":"","mappings":"kGAwJA,+CAAA,+CAxJwE,sBAChD,yBACM,2BACR,qBACI,+BACH,+BACL,qPAiClB,SAASA,EAAMC,CAAiB,EAC9B,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CACrB,CAACC,EAAOC,EAAS,CAAGC,GAAAA,cAAY,EAACL,EAAMM,YAAY,EACnDC,EAAaC,GAAAA,YAAU,EAAC,IAAMC,OAAOC,MAAM,CAAC,CAAC,EAAGC,WAAS,CAAEX,EAAMO,UAAU,GAEjF,SAASK,EAASC,CAAiB,EACjC,GAAI,CAACb,EAAMc,QAAQ,EAAI,CAACD,EAAKC,QAAQ,CAAE,CACrC,IAAMC,EAAOF,CAAI,CAACN,IAAaJ,KAAK,CAAC,CAErCC,EAASW,GACTf,EAAMY,QAAQ,GAAGG,EACnB,CACF,CACA,SAASC,EAAQH,CAAiB,CAAEI,CAAgB,EACpC,UAAVA,EAAEC,GAAG,EACPN,EAASC,EAEb,CACA,IAAMM,EAAUX,GAAAA,YAAU,EAAC,IAClBY,GAAAA,SAAU,EAACpB,EAAMmB,OAAO,CAAEZ,MAOnC,MAJAc,GAAAA,cAAY,EAAC,KACXjB,EAASJ,EAAMG,KAAK,CACtB,yCAKOF,uBACAqB,OAAK,0BACLC,GAAAA,KAAG,EAACvB,EAAMuB,GAAG,yEAGbC,KAAG,oBAAOL,cACR,AAACN,IACA,IAAMY,EAAWzB,EAAMc,QAAQ,EAAID,EAAKC,QAAQ,CAC1CY,EAAe,KACnBd,EAASC,EACX,EACMc,EAAYpB,IAElB,4FAOamB,uCADAV,EAAQY,IAAI,CAAC,KAAMf,uCAFlBY,EAAW,GAAK,wCACXA,qCAYHC,cAHAD,kCACA,uBAKTZ,CAAI,CAACc,EAAUE,KAAK,CAAC,yBAlBjBC,GAAAA,IAAE,EAAC,OAAQjB,EAAKkB,KAAK,CAAElB,EAAKmB,MAAM,IAUjChC,EAAMiC,IAAI,sJACTpB,CAAI,CAACc,EAAUxB,KAAK,CAAC,6BAGnBU,CAAI,CAACc,EAAUxB,KAAK,CAAC,GAAKA,UAQ3C,wCAjCY2B,GAAAA,IAAE,EAAC,MAAO9B,EAAMkC,MAAM,CAAElC,EAAM+B,KAAK,UAsCzD,CAIAI,GAAAA,eAAa,EACX,UACA,CACEJ,MAAO,KAAK,EACZR,IAAK,KAAK,EACVU,KAAM,KAAK,EACXnB,SAAU,KAAK,EACfX,MAAO,KAAK,EACZG,aAAc,KAAK,EACnBa,QAAS,EAAE,CACXP,SAAU,KAAK,EACfL,WAAY,KAAK,EACjB2B,OAAQ,KAAK,CACf,EACA,CAACE,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBvC,EAAQwC,GAAAA,YAAU,EACtB,CACEN,OAAQI,EAAGJ,MAAM,EAAI,aACrBtB,SAASG,CAAY,EACnBuB,EAAGG,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQ5B,CACV,GAEJ,CACF,EACAqB,GAQF,MALAf,GAAAA,cAAY,EAAC,KACXiB,EAAGM,eAAe,CAAC,WACnBN,EAAGM,eAAe,CAAC,eACnBN,EAAGM,eAAe,CAAC,MACrB,yBACQ7C,EAAUC,EACpB,SAEF,EAAeD"}
|
package/lib/segmented/index.js
CHANGED
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
--segmented-bg: var(--primary-details-bg);
|
|
9
9
|
--segmented-current-bg: #fff;
|
|
10
10
|
}
|
|
11
|
-
`),w=(0,t.createMemo)(()=>Object.assign({},a.FieldName,r.fieldNames));function C(e){if(!r.disabled&&!e.disabled){let t=e[w().value];(0,n.default)(r.onChange)&&r.onChange(t),void 0===r.value&&y(t)}}let k=(0,t.createMemo)(()=>(0,i.default)(r.options,w()));return(0,t.createEffect)(()=>{y(void 0!==r.value&&r.value||r.defaultValue)}),(0,t.createEffect)(()=>{let e=k().find(e=>e[w().value]===h()),t=setTimeout(()=>{clearTimeout(t);let n=e?.ref;n?q(`.box {--w: ${n.offsetWidth}px;--h: ${n.offsetHeight}px;--left: ${n.offsetLeft}px;}`):q("")},0)}),[(()=>{let t=c();return(0,e.insert)(t,b,null),(0,e.insert)(t,E,null),(0,e.insert)(t,s.style,null),(0,e.insert)(t,x,null),(0,e.insert)(t,()=>(0,l.css)(r.css),null),t})(),(()=>{let n=d(),s=u;return"function"==typeof s?(0,e.use)(s,n):u=n,(0,e.insert)(n,(0,e.createComponent)(t.For,{get each(){return k()},children:(n,s)=>{let a=r.disabled||n.disabled,i=()=>C(n),o=w();return[(()=>{let t=f();return(0,e.addEventListener)(t,"change",i),t.disabled=a,(0,e.effect)(()=>(0,e.setAttribute)(t,"name",r.name)),(0,e.effect)(()=>t.value=n[o.value]),(0,e.effect)(()=>t.checked=n[o.value]===h()),t})(),(()=>{let r=g(),u=k()[s()].ref;return"function"==typeof u?(0,e.use)(u,r):k()[s()].ref=r,(0,e.addEventListener)(r,"click",i,!0),r.$$keyup=({key:e})=>{"Enter"===e&&C(n)},(0,e.setAttribute)(r,"tabindex",a?-1:0),(0,e.setAttribute)(r,"aria-disabled",a),(0,e.insert)(r,(0,e.createComponent)(t.Show,{get when(){return n[o.icon]},get children(){let t=m();return(0,e.insert)(t,()=>n[o.icon]),t}}),null),(0,e.insert)(r,()=>n[o.label],null),(0,e.insert)(r,(0,e.createComponent)(t.Show,{get when(){return n[o.suffix]},get children(){let t=p();return t._$owner=(0,e.getOwner)(),(0,e.insert)(t,()=>n[o.suffix]),t}}),null),(0,e.effect)(()=>(0,e.className)(r,(0,l.cx)("label",n.class))),r})()]}})),(0,e.effect)(()=>(0,e.className)(n,(0,l.cx)("box",r.class))),n})()]}(0,r.customElement)("n-segmented",{class:void 0,css:void 0,name:void 0,disabled:void 0,value:void 0,defaultValue:void 0,options:[],onChange:void 0,fieldNames:void 0},(
|
|
11
|
+
`),w=(0,t.createMemo)(()=>Object.assign({},a.FieldName,r.fieldNames));function C(e){if(!r.disabled&&!e.disabled){let t=e[w().value];(0,n.default)(r.onChange)&&r.onChange(t),void 0===r.value&&y(t)}}let k=(0,t.createMemo)(()=>(0,i.default)(r.options,w()));return(0,t.createEffect)(()=>{y(void 0!==r.value&&r.value||r.defaultValue)}),(0,t.createEffect)(()=>{let e=k().find(e=>e[w().value]===h()),t=setTimeout(()=>{clearTimeout(t);let n=e?.ref;n?q(`.box {--w: ${n.offsetWidth}px;--h: ${n.offsetHeight}px;--left: ${n.offsetLeft}px;}`):q("")},0)}),[(()=>{let t=c();return(0,e.insert)(t,b,null),(0,e.insert)(t,E,null),(0,e.insert)(t,s.style,null),(0,e.insert)(t,x,null),(0,e.insert)(t,()=>(0,l.css)(r.css),null),t})(),(()=>{let n=d(),s=u;return"function"==typeof s?(0,e.use)(s,n):u=n,(0,e.insert)(n,(0,e.createComponent)(t.For,{get each(){return k()},children:(n,s)=>{let a=r.disabled||n.disabled,i=()=>C(n),o=w();return[(()=>{let t=f();return(0,e.addEventListener)(t,"change",i),t.disabled=a,(0,e.effect)(()=>(0,e.setAttribute)(t,"name",r.name)),(0,e.effect)(()=>t.value=n[o.value]),(0,e.effect)(()=>t.checked=n[o.value]===h()),t})(),(()=>{let r=g(),u=k()[s()].ref;return"function"==typeof u?(0,e.use)(u,r):k()[s()].ref=r,(0,e.addEventListener)(r,"click",i,!0),r.$$keyup=({key:e})=>{"Enter"===e&&C(n)},(0,e.setAttribute)(r,"tabindex",a?-1:0),(0,e.setAttribute)(r,"aria-disabled",a),(0,e.insert)(r,(0,e.createComponent)(t.Show,{get when(){return n[o.icon]},get children(){let t=m();return(0,e.insert)(t,()=>n[o.icon]),t}}),null),(0,e.insert)(r,()=>n[o.label],null),(0,e.insert)(r,(0,e.createComponent)(t.Show,{get when(){return n[o.suffix]},get children(){let t=p();return t._$owner=(0,e.getOwner)(),(0,e.insert)(t,()=>n[o.suffix]),t}}),null),(0,e.effect)(()=>(0,e.className)(r,(0,l.cx)("label",n.class))),r})()]}})),(0,e.effect)(()=>(0,e.className)(n,(0,l.cx)("box",r.class))),n})()]}(0,r.customElement)("n-segmented",{class:void 0,css:void 0,name:void 0,disabled:void 0,value:void 0,defaultValue:void 0,options:[],onChange:void 0,fieldNames:void 0},(n,l)=>{let r=l.element,s=(0,t.mergeProps)({css:r.css,name:r.name,disabled:r.disabled,value:r.value,defaultValue:r.defaultValue,options:r.options,fieldNames:r.fieldNames,onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))}},n);return(0,t.createEffect)(()=>{r.removeAttribute("options"),r.removeAttribute("field-names"),r.removeAttribute("css")}),(0,e.createComponent)(b,s)});const v=b;(0,e.delegateEvents)(["click","keyup"]);
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/segmented/index.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../components/segmented/index.tsx"],"sourcesContent":["import { For, Show, createEffect, createMemo, createSignal, mergeProps } from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport { FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme from '../theme';\nimport '../typography';\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\n\nexport interface SegmentedProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** input[type=\"radio\"] 的 name 属性 */\n name?: string;\n /** 只读 */\n disabled?: boolean;\n /** 值 */\n value?: string | number;\n /** 默认值 */\n defaultValue?: string | number;\n /** 选项数据 */\n options?: (BaseOption | string | number)[];\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n /** 值修改时的回调方法 */\n onChange?(val: string | number): void;\n}\n\nfunction Segmented(props: SegmentedProps) {\n const { baseStyle, isDark } = theme;\n const [value, setValue] = createSignal(props.defaultValue);\n const [offsetStyle, setOffsetStyle] = createSignal('');\n let box: HTMLDivElement | undefined;\n const cssVar = createMemo(() => {\n if (isDark()) {\n return css`\n :host {\n --segmented-bg: #000;\n --segmented-current-bg: #1f1f1f;\n }\n `;\n }\n\n return css`\n :host {\n --segmented-bg: var(--primary-details-bg);\n --segmented-current-bg: #fff;\n }\n `;\n });\n const fieldNames = createMemo(() => Object.assign({}, FieldName, props.fieldNames));\n\n function onChange(item: BaseOption) {\n if (!props.disabled && !item.disabled) {\n const next = item[fieldNames().value];\n\n if (isFunction(props.onChange)) {\n props.onChange(next);\n }\n if (props.value === void 0) {\n setValue(next);\n }\n }\n }\n function onKeyUp(key: string, item: BaseOption) {\n if (key === 'Enter') {\n onChange(item);\n }\n }\n const options = createMemo(() => {\n return getOptions(props.options, fieldNames());\n });\n\n createEffect(() => {\n setValue((props.value !== void 0 && props.value) || props.defaultValue);\n });\n\n createEffect(() => {\n const val = options().find((o) => o[fieldNames().value] === value());\n const timer = setTimeout(() => {\n clearTimeout(timer);\n const el = val?.ref;\n\n if (el) {\n setOffsetStyle(\n `.box {--w: ${el.offsetWidth}px;--h: ${el.offsetHeight}px;--left: ${el.offsetLeft}px;}`,\n );\n } else {\n setOffsetStyle('');\n }\n }, 0);\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {cssVar()}\n {style}\n {offsetStyle()}\n {css(props.css)}\n </style>\n <div ref={box} class={cx('box', props.class)}>\n <For each={options()}>\n {(item, i) => {\n const readOnly = props.disabled || item.disabled;\n const handleChange = () => onChange(item);\n const fieldName = fieldNames();\n\n return (\n <>\n <input\n class=\"segmented\"\n type=\"radio\"\n name={props.name}\n value={item[fieldName.value]}\n disabled={readOnly}\n checked={item[fieldName.value] === value()}\n onChange={handleChange}\n />\n <label\n class={cx('label', item.class)}\n tabindex={readOnly ? -1 : 0}\n onKeyUp={({ key }) => onKeyUp(key, item)}\n onClick={handleChange}\n aria-disabled={readOnly}\n ref={options()[i()].ref}\n >\n <Show when={item[fieldName.icon]}>\n <span class=\"icon\">{item[fieldName.icon]}</span>\n </Show>\n {item[fieldName.label]}\n <Show when={item[fieldName.suffix]}>\n <n-typography type=\"secondary\">{item[fieldName.suffix]}</n-typography>\n </Show>\n </label>\n </>\n );\n }}\n </For>\n </div>\n </>\n );\n}\n\nexport type SegmentedElement = CustomElement<SegmentedProps>;\n\ncustomElement<SegmentedProps>(\n 'n-segmented',\n {\n class: void 0,\n css: void 0,\n name: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n options: [],\n onChange: void 0,\n fieldNames: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n name: el.name,\n disabled: el.disabled,\n value: el.value,\n defaultValue: el.defaultValue,\n options: el.options,\n fieldNames: el.fieldNames,\n onChange(next: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: next,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('options');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return <Segmented {...props} />;\n },\n);\nexport default Segmented;\n"],"names":["Segmented","props","box","baseStyle","isDark","theme","value","setValue","createSignal","defaultValue","offsetStyle","setOffsetStyle","cssVar","createMemo","css","fieldNames","Object","assign","FieldName","onChange","item","disabled","next","isFunction","options","getOptions","createEffect","val","find","o","timer","setTimeout","clearTimeout","el","ref","offsetWidth","offsetHeight","offsetLeft","style","For","i","readOnly","handleChange","fieldName","name","key","Show","icon","label","suffix","cx","class","customElement","_","opt","element","mergeProps","dispatchEvent","CustomEvent","detail","removeAttribute"],"rangeMappings":";;;;;;;;;;","mappings":"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"}
|
package/lib/select/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return m}});const e=require("solid-js/web"),t=require("solid-js"),n=c(require("@moneko/common/lib/isFunction")),r=require("solid-element"),a=require("./style"),o=require("../basic-config"),l=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=s(void 0);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var l=a?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(r,o,l):r[o]=e[o]}return r.default=e,n&&n.set(e,r),r}(require("../dropdown")),i=c(require("../get-options"));function c(e){return e&&e.__esModule?e:{default:e}}function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(s=function(e){return e?n:t})(e)}require("../tag");const u=(0,e.template)('<span class="prefix">'),d=(0,e.template)('<label class="label">'),p=(0,e.template)('<span class="suffix">'),f=(0,e.template)('<div class="select"><div class="tags">'),v=(0,e.template)('<span class="value">'),g=(0,e.template)('<span class="placeholder">'),h=(0,e.template)('<n-tag class="tag">',!0,!1);function b(r){let c,s;let[b,m]=(0,t.splitProps)(r,["css","value","onChange","open","onOpenChange","label","prefixIcon","suffixIcon","placeholder","trigger","options"]),[_,w]=(0,t.createSignal)(null),[y,$]=(0,t.createSignal)([]),[k,C]=(0,t.createSignal)(""),[E,O]=(0,t.createSignal)([]),[x,A]=(0,t.createSignal)({}),j=(0,t.createMemo)(()=>Object.assign({},o.FieldName,m.fieldNames));function S(e){m.disabled||((0,n.default)(b.onOpenChange)&&b.onOpenChange(e),void 0===b.open&&w(e))}function M(e){e.target?.parentElement===c?.parentNode?.parentNode?.activeElement&&S(!(0,t.untrack)(_))}function P(e,t){void 0===b.value&&$(e?Array.isArray(e)?e:[e]:[]),(0,n.default)(b.onChange)&&b.onChange(e,t)}function I({key:e}){switch(e){case"ArrowDown":case"ArrowUp":break;case"Backspace":if(m.multiple){let e=[...(0,t.untrack)(y)];e.splice(-1,1),P(e,(0,t.untrack)(x)[(0,t.untrack)(y).length-1])}else P(void 0,(0,t.untrack)(x)[(0,t.untrack)(y)[0]]);break;case"Enter":S(!(0,t.untrack)(_));break;case"Escape":S(!1)}}function q(e){e.stopPropagation(),e.preventDefault()}function L(e,n){q(n),P((0,t.untrack)(y).filter(t=>t!==e),(0,t.untrack)(x)[e])}function D(e){q(e),S(!0)}function N(e){q(e),(0,t.untrack)(_)&&S(!1)}(0,t.createEffect)(()=>{(0,t.batch)(()=>{let e=j(),t=(0,i.default)(b.options,e);O(t),A(function e(t,n){let r={};for(let a=0,o=t.length;a<o;a++){let o=t[a],l=o[n.options];r[o[n.value]]=o,Array.isArray(l)&&Object.assign(r,e(l,n));let i=o[n.children];r[o[n.value]]=o,Array.isArray(i)&&Object.assign(r,e(i,n))}return r}(t,e))})}),(0,t.createEffect)(()=>{(0,t.batch)(()=>{b.open!==(0,t.untrack)(_)&&void 0!==b.open&&w(b.open),void 0!==b.value&&null!==b.value?$(Array.isArray(b.value)?b.value:[b.value]):$([])})}),(0,t.onMount)(()=>{if(void 0===b.value){let e=m.defaultValue;$(e?Array.isArray(e)?e:[e]:[])}}),(0,t.createEffect)(()=>{b.label&&C(`.label {--x: ${s?.offsetLeft||0}px; }`)});let W=(0,t.createMemo)(()=>(0,n.default)(b.prefixIcon)?b.prefixIcon():b.prefixIcon),F=(0,t.createMemo)(()=>(0,n.default)(b.label)?b.label():b.label),B=(0,t.createMemo)(()=>(0,n.default)(b.suffixIcon)?b.suffixIcon():b.suffixIcon);return(0,e.createComponent)(l.default,(0,e.mergeProps)({placement:"left",get css(){return a.style+k()+(b.css||"")},trigger:"none",get items(){return E()},get value(){return y()},onChange:P,get open(){return _()},onOpenChange:S},m,{get children(){let n=f(),r=c,a=n.firstChild,o=s;return(0,e.addEventListener)(n,"blur",N),(0,e.addEventListener)(n,"focus",D),(0,e.addEventListener)(n,"keydown",I,!0),"function"==typeof r?(0,e.use)(r,n):c=n,(0,e.insert)(n,(0,e.createComponent)(t.Show,{get when(){return W()},get children(){let t=u();return(0,e.insert)(t,W),t}}),a),(0,e.insert)(n,(0,e.createComponent)(t.Show,{get when(){return F()},get children(){let t=d();return(0,e.insert)(t,F),t}}),a),(0,e.addEventListener)(a,"mousedown",M,!0),"function"==typeof o?(0,e.use)(o,a):s=a,(0,e.insert)(a,(0,e.createComponent)(t.Show,{get when(){return m.multiple},get fallback(){return(0,e.createComponent)(t.Show,{get when(){return y().length},get fallback(){return(0,e.createComponent)(t.Show,{get when(){return b.placeholder},get children(){let t=g();return(0,e.insert)(t,()=>b.placeholder),t}})},get children(){let t=v();return(0,e.insert)(t,()=>x()[y()[0]]?.[j().label]||y()[0]),(0,e.effect)(()=>t.classList.toggle("opacity",!!_())),t}})},get children(){return(0,e.createComponent)(t.For,{get each(){return y()},get fallback(){return(0,e.createComponent)(t.Show,{get when(){return b.placeholder},get children(){let t=g();return(0,e.insert)(t,()=>b.placeholder),t}})},children:t=>(()=>{let n=h();return(0,e.addEventListener)(n,"close",L.bind(null,t)),n._$owner=(0,e.getOwner)(),(0,e.insert)(n,()=>x()[t]?.[j().label]||t),(0,e.effect)(e=>{let r=!!_(),a=x()[t]?.type||"primary",o=x()[t]?.color,l=x()[t]?.icon,i=!m.disabled&&!x()[t]?.disabled,c=m.disabled||x()[t]?.disabled;return r!==e._v$3&&n.classList.toggle("opacity",e._v$3=r),a!==e._v$4&&(n.type=e._v$4=a),o!==e._v$5&&(n.color=e._v$5=o),l!==e._v$6&&(n.icon=e._v$6=l),i!==e._v$7&&(n.closeIcon=e._v$7=i),c!==e._v$8&&(n.disabled=e._v$8=c),e},{_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0,_v$8:void 0}),n})()})}})),(0,e.insert)(n,(0,e.createComponent)(t.Show,{get when(){return B()},get children(){let t=p();return(0,e.insert)(t,B),t}}),null),(0,e.effect)(t=>{let r=m.disabled?-1:0,a=m.disabled;return r!==t._v$&&(0,e.setAttribute)(n,"tabindex",t._v$=r),a!==t._v$2&&(0,e.setAttribute)(n,"aria-disabled",t._v$2=a),t},{_v$:void 0,_v$2:void 0}),n}}))}(0,r.customElement)("n-select",{...l.defaultProps,options:[],label:void 0,placeholder:"请选择",dropdownMatchSelectWidth:!0,prefixIcon:void 0,suffixIcon:void 0},(n,r)=>{let a=r.element,o=(0,t.mergeProps)({onChange(e,t){a.dispatchEvent(new CustomEvent("change",{detail:[e,t]}))},onOpenChange(e){a.dispatchEvent(new CustomEvent("openchange",{detail:e}))}},n);return(0,t.createEffect)(()=>{a.removeAttribute("options"),a.removeAttribute("field-names"),a.removeAttribute("css")}),(0,e.createComponent)(b,o)});const m=b;(0,e.delegateEvents)(["keydown","mousedown"]);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/select/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/select/index.tsx"],"sourcesContent":["import {\n For,\n Show,\n batch,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onMount,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport { FieldName } from '../basic-config';\nimport Dropdown, { defaultProps } from '../dropdown';\nimport getOptions from '../get-options';\nimport '../tag';\nimport type { CustomElement, DropdownMultipleProps, DropdownProps, MenuOption } from '..';\n\nfunction Select(props: SelectProps) {\n const [local, other] = splitProps(props, [\n 'css',\n 'value',\n 'onChange',\n 'open',\n 'onOpenChange',\n 'label',\n 'prefixIcon',\n 'suffixIcon',\n 'placeholder',\n 'trigger',\n 'options',\n ]);\n let ref: HTMLInputElement | undefined;\n let tagsRef: HTMLDivElement | undefined;\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [x, setX] = createSignal<string>('');\n const [options, setOptions] = createSignal<MenuOption[]>([]);\n const [kv, setKv] = createSignal<Record<string, MenuOption>>({});\n\n const fieldNames = createMemo(() => Object.assign({}, FieldName, other.fieldNames));\n\n function getKv(arr: MenuOption[], fieldDic: typeof FieldName) {\n const optKv: Record<string, MenuOption> = {};\n\n for (let i = 0, len = arr.length; i < len; i++) {\n const item = arr[i];\n const _options = item[fieldDic.options];\n\n optKv[item[fieldDic.value]!] = item;\n if (Array.isArray(_options)) {\n Object.assign(optKv, getKv(_options as MenuOption[], fieldDic));\n }\n const _children = item[fieldDic.children];\n\n optKv[item[fieldDic.value]!] = item;\n if (Array.isArray(_children)) {\n Object.assign(optKv, getKv(_children as MenuOption[], fieldDic));\n }\n }\n return optKv;\n }\n\n createEffect(() => {\n batch(() => {\n const fieldDic = fieldNames();\n const opts = getOptions(local.options, fieldDic);\n\n setOptions(opts);\n setKv(getKv(opts, fieldDic));\n });\n });\n\n function openChange(next: boolean | null) {\n if (!other.disabled) {\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n function click(e: MouseEvent) {\n if (\n (e.target as Element)?.parentElement ===\n (ref?.parentNode?.parentNode as Document)?.activeElement\n ) {\n openChange(!untrack(open));\n }\n }\n function onChange(val: (string | number)[] | string | number | undefined, item: MenuOption) {\n if (local.value === void 0) {\n setValue(val ? (Array.isArray(val) ? val : [val]) : []);\n }\n if (isFunction(local.onChange)) {\n local.onChange(val, item);\n }\n }\n function keyDown({ key }: { key: string }) {\n switch (key) {\n case 'ArrowDown':\n // console.log(key);\n // Object.keys(state.current.kv).indexOf(state.current.value)\n break;\n case 'ArrowUp':\n break;\n case 'Backspace':\n if (other.multiple) {\n const old = [...untrack(value)];\n\n old.splice(-1, 1);\n onChange(old, untrack(kv)[untrack(value).length - 1]);\n } else {\n onChange(void 0, untrack(kv)[untrack(value)[0]]);\n }\n break;\n case 'Enter':\n openChange(!untrack(open));\n break;\n case 'Escape':\n openChange(false);\n break;\n default:\n break;\n }\n }\n function preventDefault(e: Event) {\n e.stopPropagation();\n e.preventDefault();\n }\n function deleteValue(v: string | number, e: CustomEvent) {\n preventDefault(e);\n onChange(untrack(value).filter((old) => old !== v) as never, untrack(kv)[v]);\n }\n function focus(e: FocusEvent | MouseEvent) {\n preventDefault(e);\n openChange(true);\n }\n function blur(e: FocusEvent) {\n preventDefault(e);\n if (untrack(open)) {\n openChange(false);\n }\n }\n\n createEffect(() => {\n batch(() => {\n if (local.open !== untrack(open) && local.open !== void 0) {\n setOpen(local.open);\n }\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 });\n onMount(() => {\n if (local.value === void 0) {\n const val = other.defaultValue;\n\n setValue(val ? (Array.isArray(val) ? val : [val]) : []);\n }\n });\n createEffect(() => {\n if (local.label) {\n setX(`.label {--x: ${tagsRef?.offsetLeft || 0}px; }`);\n }\n });\n const prefix = createMemo(() =>\n isFunction(local.prefixIcon) ? (local.prefixIcon() as JSX.Element) : local.prefixIcon,\n );\n const label = createMemo(() =>\n isFunction(local.label) ? (local.label() as JSX.Element) : local.label,\n );\n const suffix = createMemo(() =>\n isFunction(local.suffixIcon) ? (local.suffixIcon() as JSX.Element) : local.suffixIcon,\n );\n\n return (\n <Dropdown\n placement=\"left\"\n css={style + x() + (local.css || '')}\n trigger=\"none\"\n items={options()}\n value={value() as unknown as string}\n onChange={onChange}\n open={open()}\n onOpenChange={openChange}\n {...other}\n >\n <div\n ref={ref}\n class=\"select\"\n tabindex={other.disabled ? -1 : 0}\n onKeyDown={keyDown}\n onFocus={focus}\n onBlur={blur}\n aria-disabled={other.disabled}\n >\n <Show when={prefix()}>\n <span class=\"prefix\">{prefix()}</span>\n </Show>\n <Show when={label()}>\n <label class=\"label\">{label()}</label>\n </Show>\n <div class=\"tags\" ref={tagsRef} onMouseDown={click}>\n <Show\n when={other.multiple}\n fallback={\n <Show\n when={value().length}\n fallback={\n <Show when={local.placeholder}>\n <span class=\"placeholder\">{local.placeholder}</span>\n </Show>\n }\n >\n <span class={cx('value', open() && 'opacity')}>\n {kv()[value()[0]]?.[fieldNames().label] || value()[0]}\n </span>\n </Show>\n }\n >\n <For\n each={value()}\n fallback={\n <Show when={local.placeholder}>\n <span class=\"placeholder\">{local.placeholder}</span>\n </Show>\n }\n >\n {(v) => (\n <n-tag\n class={cx('tag', open() && 'opacity')}\n type={kv()[v]?.type || 'primary'}\n color={kv()[v]?.color}\n icon={kv()[v]?.icon}\n close-icon={!other.disabled && !kv()[v]?.disabled}\n onClose={deleteValue.bind(null, v)}\n disabled={other.disabled || kv()[v]?.disabled}\n >\n {kv()[v]?.[fieldNames().label] || v}\n </n-tag>\n )}\n </For>\n </Show>\n </div>\n <Show when={suffix()}>\n <span class=\"suffix\">{suffix()}</span>\n </Show>\n </div>\n </Dropdown>\n );\n}\n\n/** 通用API */\ninterface SelectBaseProps {\n /** 占位符 */\n placeholder?: string;\n /** 选项 */\n options?: (MenuOption | string | number)[];\n /** 标题 */\n label?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n /** 前缀图标 */\n prefixIcon?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n /** 后缀图标 */\n suffixIcon?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n style?: Record<string, string | number>;\n}\n\n/** 单选 */\nexport interface SelectProps extends Omit<DropdownProps, 'items' | 'children'>, SelectBaseProps {\n /** 值 */\n value?: string | number;\n}\n\n/** 多选 */\nexport interface SelectMultipleProps\n extends Omit<DropdownMultipleProps, 'items' | 'children'>,\n SelectBaseProps {\n /** 值\n * @default []\n */\n value?: (string | number)[];\n}\nexport type SelectElement = CustomElement<SelectProps, 'onChange' | 'onOpenChange'>;\nexport type SelectMultipleElement = CustomElement<SelectMultipleProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<SelectProps>(\n 'n-select',\n {\n ...defaultProps,\n options: [],\n label: void 0,\n placeholder: '请选择',\n dropdownMatchSelectWidth: true,\n prefixIcon: void 0,\n suffixIcon: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onChange(key: string | number, item: MenuOption) {\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 },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('options');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return createComponent(Select, props);\n },\n);\nexport default Select;\n"],"names":["Select","props","ref","tagsRef","local","other","splitProps","open","setOpen","createSignal","value","setValue","x","setX","options","setOptions","kv","setKv","fieldNames","createMemo","Object","assign","FieldName","openChange","next","disabled","isFunction","onOpenChange","click","e","target","parentElement","parentNode","activeElement","untrack","onChange","val","item","Array","isArray","keyDown","key","multiple","old","splice","length","preventDefault","stopPropagation","deleteValue","v","filter","focus","blur","createEffect","batch","fieldDic","opts","getOptions","getKv","arr","optKv","i","len","_options","_children","children","onMount","defaultValue","label","offsetLeft","prefix","prefixIcon","suffix","suffixIcon","Dropdown","style","css","Show","placeholder","cx","For","bind","type","color","icon","customElement","defaultProps","dropdownMatchSelectWidth","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","detail","removeAttribute","createComponent"],"rangeMappings":"","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../components/select/index.tsx"],"sourcesContent":["import {\n For,\n Show,\n batch,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onMount,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport { FieldName } from '../basic-config';\nimport Dropdown, { defaultProps } from '../dropdown';\nimport getOptions from '../get-options';\nimport '../tag';\nimport type { CustomElement, DropdownMultipleProps, DropdownProps, MenuOption } from '..';\n\nfunction Select(props: SelectProps) {\n const [local, other] = splitProps(props, [\n 'css',\n 'value',\n 'onChange',\n 'open',\n 'onOpenChange',\n 'label',\n 'prefixIcon',\n 'suffixIcon',\n 'placeholder',\n 'trigger',\n 'options',\n ]);\n let ref: HTMLInputElement | undefined;\n let tagsRef: HTMLDivElement | undefined;\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [x, setX] = createSignal<string>('');\n const [options, setOptions] = createSignal<MenuOption[]>([]);\n const [kv, setKv] = createSignal<Record<string, MenuOption>>({});\n\n const fieldNames = createMemo(() => Object.assign({}, FieldName, other.fieldNames));\n\n function getKv(arr: MenuOption[], fieldDic: typeof FieldName) {\n const optKv: Record<string, MenuOption> = {};\n\n for (let i = 0, len = arr.length; i < len; i++) {\n const item = arr[i];\n const _options = item[fieldDic.options];\n\n optKv[item[fieldDic.value]!] = item;\n if (Array.isArray(_options)) {\n Object.assign(optKv, getKv(_options as MenuOption[], fieldDic));\n }\n const _children = item[fieldDic.children];\n\n optKv[item[fieldDic.value]!] = item;\n if (Array.isArray(_children)) {\n Object.assign(optKv, getKv(_children as MenuOption[], fieldDic));\n }\n }\n return optKv;\n }\n\n createEffect(() => {\n batch(() => {\n const fieldDic = fieldNames();\n const opts = getOptions(local.options, fieldDic);\n\n setOptions(opts);\n setKv(getKv(opts, fieldDic));\n });\n });\n\n function openChange(next: boolean | null) {\n if (!other.disabled) {\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n function click(e: MouseEvent) {\n if (\n (e.target as Element)?.parentElement ===\n (ref?.parentNode?.parentNode as Document)?.activeElement\n ) {\n openChange(!untrack(open));\n }\n }\n function onChange(val: (string | number)[] | string | number | undefined, item: MenuOption) {\n if (local.value === void 0) {\n setValue(val ? (Array.isArray(val) ? val : [val]) : []);\n }\n if (isFunction(local.onChange)) {\n local.onChange(val, item);\n }\n }\n function keyDown({ key }: { key: string }) {\n switch (key) {\n case 'ArrowDown':\n // console.log(key);\n // Object.keys(state.current.kv).indexOf(state.current.value)\n break;\n case 'ArrowUp':\n break;\n case 'Backspace':\n if (other.multiple) {\n const old = [...untrack(value)];\n\n old.splice(-1, 1);\n onChange(old, untrack(kv)[untrack(value).length - 1]);\n } else {\n onChange(void 0, untrack(kv)[untrack(value)[0]]);\n }\n break;\n case 'Enter':\n openChange(!untrack(open));\n break;\n case 'Escape':\n openChange(false);\n break;\n default:\n break;\n }\n }\n function preventDefault(e: Event) {\n e.stopPropagation();\n e.preventDefault();\n }\n function deleteValue(v: string | number, e: CustomEvent) {\n preventDefault(e);\n onChange(untrack(value).filter((old) => old !== v) as never, untrack(kv)[v]);\n }\n function focus(e: FocusEvent | MouseEvent) {\n preventDefault(e);\n openChange(true);\n }\n function blur(e: FocusEvent) {\n preventDefault(e);\n if (untrack(open)) {\n openChange(false);\n }\n }\n\n createEffect(() => {\n batch(() => {\n if (local.open !== untrack(open) && local.open !== void 0) {\n setOpen(local.open);\n }\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 });\n onMount(() => {\n if (local.value === void 0) {\n const val = other.defaultValue;\n\n setValue(val ? (Array.isArray(val) ? val : [val]) : []);\n }\n });\n createEffect(() => {\n if (local.label) {\n setX(`.label {--x: ${tagsRef?.offsetLeft || 0}px; }`);\n }\n });\n const prefix = createMemo(() =>\n isFunction(local.prefixIcon) ? (local.prefixIcon() as JSX.Element) : local.prefixIcon,\n );\n const label = createMemo(() =>\n isFunction(local.label) ? (local.label() as JSX.Element) : local.label,\n );\n const suffix = createMemo(() =>\n isFunction(local.suffixIcon) ? (local.suffixIcon() as JSX.Element) : local.suffixIcon,\n );\n\n return (\n <Dropdown\n placement=\"left\"\n css={style + x() + (local.css || '')}\n trigger=\"none\"\n items={options()}\n value={value() as unknown as string}\n onChange={onChange}\n open={open()}\n onOpenChange={openChange}\n {...other}\n >\n <div\n ref={ref}\n class=\"select\"\n tabindex={other.disabled ? -1 : 0}\n onKeyDown={keyDown}\n onFocus={focus}\n onBlur={blur}\n aria-disabled={other.disabled}\n >\n <Show when={prefix()}>\n <span class=\"prefix\">{prefix()}</span>\n </Show>\n <Show when={label()}>\n <label class=\"label\">{label()}</label>\n </Show>\n <div class=\"tags\" ref={tagsRef} onMouseDown={click}>\n <Show\n when={other.multiple}\n fallback={\n <Show\n when={value().length}\n fallback={\n <Show when={local.placeholder}>\n <span class=\"placeholder\">{local.placeholder}</span>\n </Show>\n }\n >\n <span\n class=\"value\"\n classList={{\n opacity: !!open(),\n }}\n >\n {kv()[value()[0]]?.[fieldNames().label] || value()[0]}\n </span>\n </Show>\n }\n >\n <For\n each={value()}\n fallback={\n <Show when={local.placeholder}>\n <span class=\"placeholder\">{local.placeholder}</span>\n </Show>\n }\n >\n {(v) => (\n <n-tag\n class=\"tag\"\n classList={{\n opacity: !!open(),\n }}\n type={kv()[v]?.type || 'primary'}\n color={kv()[v]?.color}\n icon={kv()[v]?.icon}\n close-icon={!other.disabled && !kv()[v]?.disabled}\n onClose={deleteValue.bind(null, v)}\n disabled={other.disabled || kv()[v]?.disabled}\n >\n {kv()[v]?.[fieldNames().label] || v}\n </n-tag>\n )}\n </For>\n </Show>\n </div>\n <Show when={suffix()}>\n <span class=\"suffix\">{suffix()}</span>\n </Show>\n </div>\n </Dropdown>\n );\n}\n\n/** 通用API */\ninterface SelectBaseProps {\n /** 占位符 */\n placeholder?: string;\n /** 选项 */\n options?: (MenuOption | string | number)[];\n /** 标题 */\n label?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n /** 前缀图标 */\n prefixIcon?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n /** 后缀图标 */\n suffixIcon?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n style?: Record<string, string | number>;\n}\n\n/** 单选 */\nexport interface SelectProps extends Omit<DropdownProps, 'items' | 'children'>, SelectBaseProps {\n /** 值 */\n value?: string | number;\n}\n\n/** 多选 */\nexport interface SelectMultipleProps\n extends Omit<DropdownMultipleProps, 'items' | 'children'>,\n SelectBaseProps {\n /** 值\n * @default []\n */\n value?: (string | number)[];\n}\nexport type SelectElement = CustomElement<SelectProps, 'onChange' | 'onOpenChange'>;\nexport type SelectMultipleElement = CustomElement<SelectMultipleProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<SelectProps>(\n 'n-select',\n {\n ...defaultProps,\n options: [],\n label: void 0,\n placeholder: '请选择',\n dropdownMatchSelectWidth: true,\n prefixIcon: void 0,\n suffixIcon: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onChange(key: string | number, item: MenuOption) {\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 },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('options');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return <Select {...props} />;\n },\n);\nexport default Select;\n"],"names":["Select","props","ref","tagsRef","local","other","splitProps","open","setOpen","createSignal","value","setValue","x","setX","options","setOptions","kv","setKv","fieldNames","createMemo","Object","assign","FieldName","openChange","next","disabled","isFunction","onOpenChange","click","e","target","parentElement","parentNode","activeElement","untrack","onChange","val","item","Array","isArray","keyDown","key","multiple","old","splice","length","preventDefault","stopPropagation","deleteValue","v","filter","focus","blur","createEffect","batch","fieldDic","opts","getOptions","getKv","arr","optKv","i","len","_options","_children","children","onMount","defaultValue","label","offsetLeft","prefix","prefixIcon","suffix","suffixIcon","Dropdown","style","css","Show","placeholder","For","bind","type","color","icon","customElement","defaultProps","dropdownMatchSelectWidth","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","detail","removeAttribute"],"rangeMappings":"","mappings":"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"}
|
package/lib/skeleton/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return
|
|
1
|
+
"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return v}});const t=require("solid-js/web"),i=require("solid-js"),r=require("@moneko/css"),n=require("solid-element"),a=(e=require("../theme"))&&e.__esModule?e:{default:e},s=(0,t.template)("<style>"),l=(0,t.template)('<div class="avatar">'),o=(0,t.template)('<div class="title">'),c=(0,t.template)('<div><div class="body"><div class="paragraph">'),d=(0,t.template)("<div>"),g=(0,r.css)`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
inline-size: 100%;
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
background-position-x: -20%;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
`;function
|
|
71
|
+
`;function u(e){let{baseStyle:n,isDark:u}=a.default,v=(0,i.createMemo)(()=>Array(e.rows).fill(0)),p=(0,i.createMemo)(()=>u()?(0,r.css)`
|
|
72
72
|
:host {
|
|
73
73
|
--skeleton-bg: rgb(255 255 255 / 6%);
|
|
74
74
|
--skeleton-bg-active: linear-gradient(
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
)
|
|
80
80
|
transparent 180%/200% 100%;
|
|
81
81
|
}
|
|
82
|
-
`:(0,
|
|
82
|
+
`:(0,r.css)`
|
|
83
83
|
:host {
|
|
84
84
|
--skeleton-bg: rgb(0 0 0 / 6%);
|
|
85
85
|
--skeleton-bg-active: linear-gradient(
|
|
@@ -90,5 +90,5 @@
|
|
|
90
90
|
)
|
|
91
91
|
transparent 180%/200% 100%;
|
|
92
92
|
}
|
|
93
|
-
`);return[(()=>{let
|
|
93
|
+
`);return[(()=>{let i=s();return(0,t.insert)(i,n,null),(0,t.insert)(i,p,null),(0,t.insert)(i,g,null),(0,t.insert)(i,()=>(0,r.css)(e.css),null),i})(),(()=>{let n=c(),a=n.firstChild,s=a.firstChild;return(0,t.insert)(n,(0,t.createComponent)(i.Show,{get when(){return e.avatar},get children(){let i=l();return(0,t.effect)(()=>i.classList.toggle("active",!!e.active)),i}}),a),(0,t.insert)(a,(0,t.createComponent)(i.Show,{get when(){return e.title},get children(){let i=o();return(0,t.effect)(()=>i.classList.toggle("active",!!e.active)),i}}),s),(0,t.insert)(s,(0,t.createComponent)(i.For,{get each(){return v()},children:()=>(()=>{let i=d();return(0,t.effect)(()=>i.classList.toggle("active",!!e.active)),i})()})),(0,t.effect)(()=>(0,t.className)(n,(0,r.cx)("skeleton",e.class))),n})()]}(0,n.customElement)("n-skeleton",{rows:3,active:void 0,avatar:void 0,title:void 0,css:void 0,class:void 0},(e,r)=>{let n=r.element,a=(0,i.mergeProps)({rows:n.rows,active:n.active,avatar:n.avatar,title:n.title,css:n.css},e);return(0,t.createComponent)(u,a)});const v=u;
|
|
94
94
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/skeleton/index.tsx"],"sourcesContent":["import { For, Show,
|
|
1
|
+
{"version":3,"sources":["../../components/skeleton/index.tsx"],"sourcesContent":["import { For, Show, createMemo, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nconst style = css`\n :host {\n display: block;\n inline-size: 100%;\n }\n\n .skeleton {\n display: flex;\n inline-size: 100%;\n gap: 16px;\n }\n\n .avatar,\n .title,\n .paragraph > div {\n overflow: hidden;\n border-radius: var(--border-radius);\n background: var(--skeleton-bg);\n transition: background-color var(--transition-duration) var(--transition-timing-function);\n }\n\n .avatar {\n border-radius: 50%;\n inline-size: 32px;\n block-size: 32px;\n }\n\n .body {\n flex: 1;\n }\n\n .title {\n margin-block-end: 16px;\n inline-size: 32%;\n block-size: 32px;\n }\n\n .paragraph {\n display: flex;\n padding: 0;\n flex-direction: column;\n gap: 12px;\n\n & > div {\n inline-size: 100%;\n block-size: 16px;\n list-style: none;\n\n &:last-of-type {\n inline-size: 65%;\n }\n }\n }\n\n .active {\n &::after {\n display: block;\n block-size: 100%;\n animation: skeleton-effect 1.4s var(--transition-timing-function) infinite;\n background: var(--skeleton-bg-active);\n content: '';\n transition: background-color var(--transition-duration) var(--transition-timing-function);\n }\n }\n\n @keyframes skeleton-effect {\n to {\n background-position-x: -20%;\n }\n }\n`;\n\nexport interface SkeletonProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 行\n * @default 3\n */\n rows?: number;\n /** 显示动画\n * @default false\n */\n active?: boolean;\n /** 显示头像\n * @default false\n */\n avatar?: boolean;\n /** 显示标题\n * @default false\n */\n title?: boolean;\n}\n\nfunction Skeleton(props: SkeletonProps) {\n const { baseStyle, isDark } = theme;\n const rows = createMemo(() => Array(props.rows).fill(0));\n const cssVar = createMemo(() => {\n if (isDark()) {\n return css`\n :host {\n --skeleton-bg: rgb(255 255 255 / 6%);\n --skeleton-bg-active: linear-gradient(\n 100deg,\n rgb(255 255 255 / 5%) 40%,\n rgb(255 255 255 / 15%) 50%,\n rgb(255 255 255 / 5%) 60%\n )\n transparent 180%/200% 100%;\n }\n `;\n }\n\n return css`\n :host {\n --skeleton-bg: rgb(0 0 0 / 6%);\n --skeleton-bg-active: linear-gradient(\n 100deg,\n rgb(0 0 0 / 5%) 40%,\n rgb(0 0 0 / 15%) 50%,\n rgb(0 0 0 / 5%) 60%\n )\n transparent 180%/200% 100%;\n }\n `;\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {cssVar()}\n {style}\n {css(props.css)}\n </style>\n <div class={cx('skeleton', props.class)}>\n <Show when={props.avatar}>\n <div\n class=\"avatar\"\n classList={{\n active: props.active,\n }}\n />\n </Show>\n <div class=\"body\">\n <Show when={props.title}>\n <div\n class=\"title\"\n classList={{\n active: props.active,\n }}\n />\n </Show>\n <div class=\"paragraph\">\n <For each={rows()}>\n {() => (\n <div\n classList={{\n active: props.active,\n }}\n />\n )}\n </For>\n </div>\n </div>\n </div>\n </>\n );\n}\n\nexport type SkeletonElement = CustomElement<SkeletonProps>;\ncustomElement<SkeletonProps>(\n 'n-skeleton',\n {\n rows: 3,\n active: void 0,\n avatar: void 0,\n title: void 0,\n css: void 0,\n class: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n rows: el.rows,\n active: el.active,\n avatar: el.avatar,\n title: el.title,\n css: el.css,\n },\n _,\n );\n\n return <Skeleton {...props} />;\n },\n);\nexport default Skeleton;\n"],"names":["style","css","Skeleton","props","baseStyle","isDark","theme","rows","createMemo","Array","fill","cssVar","Show","avatar","active","title","For","cx","class","customElement","_","opt","el","element","mergeProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"wGA4MA,+CAAA,+CA5MkD,sBAC1B,yBACM,8BACZ,mPAGZA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsElB,CAAC,CAyBD,SAASC,EAASC,CAAoB,EACpC,GAAM,CAAEC,UAAAA,CAAS,CAAEC,OAAAA,CAAM,CAAE,CAAGC,SAAK,CAC7BC,EAAOC,GAAAA,YAAU,EAAC,IAAMC,MAAMN,EAAMI,IAAI,EAAEG,IAAI,CAAC,IAC/CC,EAASH,GAAAA,YAAU,EAAC,IACxB,AAAIH,IACKJ,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;MAWX,CAAC,CAGIA,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;IAWX,CAAC,EAGH,4CAGOG,uBACAO,uBACAX,2BACAC,GAAAA,KAAG,EAACE,EAAMF,GAAG,uGAGbW,MAAI,oBAAOT,EAAMU,MAAM,gFAIVV,EAAMW,MAAM,gDAKvBF,MAAI,oBAAOT,EAAMY,KAAK,gFAITZ,EAAMW,MAAM,gDAKvBE,KAAG,oBAAOT,cACR,yEAGaJ,EAAMW,MAAM,+CAvBtBG,GAAAA,IAAE,EAAC,WAAYd,EAAMe,KAAK,UAiC5C,CAGAC,GAAAA,eAAa,EACX,aACA,CACEZ,KAAM,EACNO,OAAQ,KAAK,EACbD,OAAQ,KAAK,EACbE,MAAO,KAAK,EACZd,IAAK,KAAK,EACViB,MAAO,KAAK,CACd,EACA,CAACE,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBpB,EAAQqB,GAAAA,YAAU,EACtB,CACEjB,KAAMe,EAAGf,IAAI,CACbO,OAAQQ,EAAGR,MAAM,CACjBD,OAAQS,EAAGT,MAAM,CACjBE,MAAOO,EAAGP,KAAK,CACfd,IAAKqB,EAAGrB,GAAG,AACb,EACAmB,GAGF,4BAAQlB,EAAaC,EACvB,SAEF,EAAeD"}
|
package/lib/spin/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return d}});const t=require("solid-js/web"),n=require("solid-js"),
|
|
2
|
-
.
|
|
1
|
+
"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return d}});const t=require("solid-js/web"),n=require("solid-js"),i=require("@moneko/css"),r=require("solid-element"),s=(e=require("../theme"))&&e.__esModule?e:{default:e},o=(0,t.template)("<style>"),l=(0,t.template)('<div><div class="content">'),a=(0,i.css)`
|
|
2
|
+
.spin {
|
|
3
|
+
inline-size: fit-content;
|
|
3
4
|
position: relative;
|
|
4
5
|
box-sizing: border-box;
|
|
5
6
|
}
|
|
@@ -9,7 +10,7 @@
|
|
|
9
10
|
transition: opacity var(--transition-duration);
|
|
10
11
|
}
|
|
11
12
|
|
|
12
|
-
.
|
|
13
|
+
.spining {
|
|
13
14
|
cursor: not-allowed;
|
|
14
15
|
|
|
15
16
|
.content {
|
|
@@ -48,5 +49,5 @@
|
|
|
48
49
|
transform: rotate(360deg);
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
`;function c(e){let{baseStyle:n}=
|
|
52
|
+
`;function c(e){let{baseStyle:n}=s.default;return[(()=>{let r=o();return(0,t.insert)(r,n,null),(0,t.insert)(r,a,null),(0,t.insert)(r,()=>(0,i.css)(e.css),null),r})(),(()=>{let n=l(),r=n.firstChild;return(0,t.insert)(r,()=>e.children),(0,t.effect)(r=>{let s=(0,i.cx)("spin",e.class),o=!!e.spin;return s!==r._v$&&(0,t.className)(n,r._v$=s),o!==r._v$2&&n.classList.toggle("spining",r._v$2=o),r},{_v$:void 0,_v$2:void 0}),n})()]}(0,r.customElement)("n-spin",{class:void 0,css:void 0,spin:void 0},(e,i)=>{let r=i.element,s=(0,n.mergeProps)({children:[...r.childNodes.values()]},e);return(0,t.createComponent)(c,s)});const d=c;
|
|
52
53
|
//# sourceMappingURL=index.js.map
|
package/lib/spin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/spin/index.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../components/spin/index.tsx"],"sourcesContent":["import { mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nconst style = css`\n .spin {\n inline-size: fit-content;\n position: relative;\n box-sizing: border-box;\n }\n\n .content {\n opacity: 1;\n transition: opacity var(--transition-duration);\n }\n\n .spining {\n cursor: not-allowed;\n\n .content {\n opacity: 0.3;\n pointer-events: none;\n user-select: none;\n }\n\n &::before {\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n margin: auto;\n border: 1px solid;\n border-color: var(--text-secondary) transparent;\n border-radius: 16px;\n font-size: large;\n text-align: center;\n inline-size: 32px;\n block-size: 32px;\n inset-block: 0 0;\n inset-inline: 0 0;\n box-sizing: border-box;\n content: '✲';\n animation: spin-rotate-effect 1s infinite;\n }\n }\n\n @keyframes spin-rotate-effect {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nexport interface SpinProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 加载状态 */\n spin?: boolean;\n /** 内容 */\n children?: JSX.Element | JSX.Element[];\n}\n\nfunction Spin(props: SpinProps) {\n const { baseStyle } = theme;\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(props.css)}\n </style>\n <div\n class={cx('spin', props.class)}\n classList={{\n spining: props.spin,\n }}\n >\n <div class=\"content\">{props.children}</div>\n </div>\n </>\n );\n}\n\nexport type SpinElement = CustomElement<SpinProps>;\n\ncustomElement<SpinProps>('n-spin', { class: void 0, css: void 0, spin: void 0 }, (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n children: [...el.childNodes.values()],\n },\n _,\n );\n\n return <Spin {...props} />;\n});\n\nexport default Spin;\n"],"names":["style","css","Spin","props","baseStyle","theme","children","cx","class","spin","customElement","_","opt","el","element","mergeProps","childNodes","values"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"wGA0GA,+CAAA,+CA1G2B,sBACH,yBACM,8BACZ,oHAGZA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDlB,CAAC,CAaD,SAASC,EAAKC,CAAgB,EAC5B,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CAE3B,4CAGOD,uBACAJ,2BACAC,GAAAA,KAAG,EAACE,EAAMF,GAAG,sEAQQE,EAAMG,QAAQ,yBAL7BC,GAAAA,IAAE,EAAC,OAAQJ,EAAMK,KAAK,MAElBL,EAAMM,IAAI,oIAO7B,CAIAC,GAAAA,eAAa,EAAY,SAAU,CAAEF,MAAO,KAAK,EAAGP,IAAK,KAAK,EAAGQ,KAAM,KAAK,CAAE,EAAG,CAACE,EAAGC,KACnF,IAAMC,EAAKD,EAAIE,OAAO,CAChBX,EAAQY,GAAAA,YAAU,EACtB,CACET,SAAU,IAAIO,EAAGG,UAAU,CAACC,MAAM,GAAG,AACvC,EACAN,GAGF,4BAAQT,EAASC,EACnB,SAEA,EAAeD"}
|
package/lib/switch/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return a}});const t=require("solid-js/web"),d=require("solid-js"),
|
|
1
|
+
"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return a}});const t=require("solid-js/web"),d=require("solid-js"),s=require("@moneko/css"),i=require("solid-element"),n=require("./style"),c=(e=require("../theme"))&&e.__esModule?e:{default:e},l=(0,t.template)("<style>"),r=(0,t.template)("<span>");function o(e){let{baseStyle:i}=c.default,[o,a]=(0,d.createSignal)(!1);function v(){e.disabled||e.loading||(a(e=>!e),e.onChange?.(o()))}function u({key:e}){"Enter"===e&&v()}return(0,d.createEffect)(()=>{a(!!e.checked)}),[(()=>{let d=l();return(0,t.insert)(d,i,null),(0,t.insert)(d,n.style,null),(0,t.insert)(d,()=>(0,s.css)(e.css),null),d})(),(()=>{let d=r();return(0,t.addEventListener)(d,"keyup",u,!0),(0,t.addEventListener)(d,"click",v,!0),(0,t.effect)(i=>{let n=(0,s.cx)("switch",e.class),c=!!o(),l=!!e.loading,r=e.checkedText,a=e.unCheckedText,v=e.disabled,u=e.disabled||e.loading?-1:0;return n!==i._v$&&(0,t.className)(d,i._v$=n),c!==i._v$2&&d.classList.toggle("checked",i._v$2=c),l!==i._v$3&&d.classList.toggle("loading",i._v$3=l),r!==i._v$4&&(0,t.setAttribute)(d,"text-on",i._v$4=r),a!==i._v$5&&(0,t.setAttribute)(d,"text-off",i._v$5=a),v!==i._v$6&&(0,t.setAttribute)(d,"aria-disabled",i._v$6=v),u!==i._v$7&&(0,t.setAttribute)(d,"tabindex",i._v$7=u),i},{_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}),d})()]}(0,i.customElement)("n-switch",{class:void 0,css:void 0,checked:void 0,disabled:void 0,checkedText:void 0,unCheckedText:void 0,loading:!1,onChange:void 0},(e,s)=>{let i=s.element,n=(0,d.mergeProps)({css:i.css,checked:i.checked,disabled:i.disabled,checkedText:i.checkedText,unCheckedText:i.unCheckedText,loading:i.loading,onChange(e){i.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return(0,d.createEffect)(()=>{i.removeAttribute("css")}),(0,t.createComponent)(o,n)});const a=o;(0,t.delegateEvents)(["click","keyup"]);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/switch/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/switch/index.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../components/switch/index.tsx"],"sourcesContent":["import { 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)}\n classList={{\n checked: value(),\n loading: props.loading,\n }}\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 <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"],"rangeMappings":"","mappings":"wGAgHA,+CAAA,+CAhHuD,sBAC/B,yBACM,2BACR,wBACJ,gGAwBlB,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,qEAYLL,uCADAL,6BARFW,GAAAA,IAAE,EAAC,SAAUjB,EAAMkB,KAAK,MAEpBf,QACAH,EAAMQ,OAAO,GAEfR,EAAMmB,WAAW,GAChBnB,EAAMoB,aAAa,GACdpB,EAAMO,QAAQ,GAGnBP,EAAMO,QAAQ,EAAIP,EAAMQ,OAAO,CAAG,GAAK,gdAIzD,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,yBACQhC,EAAWC,EACrB,SAEF,EAAeD"}
|
package/lib/table/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e,t,r,n;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return q}});const a=require("solid-js/web"),l=require("solid-js"),i=d(require("@moneko/common/lib/isObject")),o=d(require("@moneko/common/lib/isString")),s=d(require("@moneko/common/lib/isUndefined")),c=require("@moneko/css"),u=require("solid-element"),m=require("./styles");require("../pagination");const p=d(require("../theme"));function d(e){return e&&e.__esModule?e:{default:e}}const g=(0,a.template)("<span>"),h=(0,a.template)("<style>"),f=(0,a.template)('<caption class="table-title"><slot name="title">'),v=(0,a.template)('<th class="table-cell">'),b=(0,a.template)('<tfoot class="table-foot"><tr>'),y=(0,a.template)("<table><thead><tr></tr></thead><tbody>"),_=(0,a.template)('<n-pagination class="table-pagination">',!0,!1),w=(0,a.template)("<th>"),S=(0,a.template)("<tr>"),$=(0,a.template)('<span class="empty-val">'),C=(0,a.template)("<td>"),P={page:1,pageSize:20,total:0,totalText:void 0,size:void 0};function x(e){let{baseStyle:t}=p.default,[r,n]=(0,l.splitProps)(e,["class","css","loading","summary","summaryText","columns","data","emptyVal","title","align","char","charoff","valign","pagination","size"]),[u]=(0,l.splitProps)(r,["align","char","charoff","valign"]),[d,x]=(0,l.createSignal)(!1),[q,z]=(0,l.createSignal)(1),[j,k]=(0,l.createSignal)(20),[O,T]=(0,l.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,l.createEffect)(()=>{(0,l.batch)(()=>{r.pagination&&(z(r.pagination.page||1),k(r.pagination.pageSize||20),T(r.pagination.total||0))})});let E=(0,l.createMemo)(()=>Object.assign(P,r.pagination)),F=(0,l.createMemo)(()=>{let e=[],t=!1;for(let n in r.columns)if(Object.prototype.hasOwnProperty.call(r.columns,n)){let l=r.columns[n],o=Object.assign({key:n,originKey:n,label:l.toString()},(0,i.default)(l)&&{label:"order"===l.type&&"序号"||n,...l});"order"===o.type&&(t=!0,o.render=function(e,t,r){return(()=>{let e=g();return(0,a.insert)(e,()=>(q()-1)*j()+r+1),e})()}),e.push(o)}return(0,l.untrack)(d)!==t&&x(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,a.insert)(e,t,null),(0,a.insert)(e,m.styles,null),(0,a.insert)(e,()=>(0,c.css)(r.css),null),e})(),(()=>{let e=y(),t=e.firstChild,i=t.firstChild,m=t.nextSibling;return(0,a.spread)(e,(0,a.mergeProps)(n,{get class(){return(0,c.cx)("table",r.size)},part:"table"}),!1,!0),(0,a.insert)(e,(0,a.createComponent)(l.Show,{get when(){return r.title},get children(){let e=f(),t=e.firstChild;return t._$owner=(0,a.getOwner)(),(0,a.insert)(t,()=>r.title),e}}),t),(0,a.spread)(t,(0,a.mergeProps)(u,{class:"table-head"}),!1,!0),(0,a.insert)(i,(0,a.createComponent)(l.For,{get each(){return F()},children:e=>{let t=M(e);return(()=>{let r=w();return(0,a.spread)(r,(0,a.mergeProps)(t,{class:"table-cell"}),!1,!0),(0,a.insert)(r,()=>e.label),r})()}})),(0,a.spread)(m,(0,a.mergeProps)(u,{class:"table-body"}),!1,!0),(0,a.insert)(m,(0,a.createComponent)(l.For,{get each(){return r.data},children:(e,t)=>(()=>{let n=S();return(0,a.insert)(n,(0,a.createComponent)(l.For,{get each(){return F()},children:n=>{let i=M(n),o=(0,l.createMemo)(()=>{if("order"===n.type){let e=E();return(e.page-1)*e.pageSize+t()+1}let l=e[n.key];return(0,s.default)(l)||null===l?(()=>{let e=$();return(0,a.insert)(e,()=>r.emptyVal),e})():l});return(()=>{let r=C();return(0,a.spread)(r,(0,a.mergeProps)(i,{class:"table-cell"}),!1,!0),(0,a.insert)(r,(0,a.createComponent)(l.Show,{get when(){return n.render},get fallback(){return(0,a.createComponent)(o,{})},get children(){return n.render?.(e[n.key],e,t())}})),r})()}})),n})()})),(0,a.insert)(e,(0,a.createComponent)(l.Show,{get when(){return r.summary?.length},get children(){let e=b(),t=e.firstChild;return(0,a.spread)(e,u,!1,!0),(0,a.insert)(t,(0,a.createComponent)(l.Show,{get when(){return d()},get children(){let e=v();return(0,a.spread)(e,(0,a.mergeProps)(()=>M(F()[0])),!1,!0),(0,a.insert)(e,()=>r.summaryText),e}}),null),(0,a.insert)(t,(0,a.createComponent)(l.For,{get each(){return F().filter(e=>!e.type||!["order"].includes(e.type))},children:e=>{let t=M(e),n=(0,l.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,o.default)(r)||(0,s.default)(r)||null===r?e:e+t[n]},0)}return null});return(()=>{let e=C();return(0,a.spread)(e,(0,a.mergeProps)(t,{class:"table-cell"}),!1,!0),(0,a.insert)(e,n),e})()}}),null),e}}),null),e})(),(0,a.createComponent)(l.Show,{get when(){return r.pagination},get children(){let e=_();return(0,a.addEventListener)(e,"change",A),e._$owner=(0,a.getOwner)(),(0,a.effect)(t=>{let n=q(),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,u.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,l.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,l.createEffect)(()=>{r.removeAttribute("css"),r.removeAttribute("title"),r.removeAttribute("data")}),(0,
|
|
1
|
+
"use strict";var e,t,r,n;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return q}});const a=require("solid-js/web"),l=require("solid-js"),i=d(require("@moneko/common/lib/isObject")),o=d(require("@moneko/common/lib/isString")),s=d(require("@moneko/common/lib/isUndefined")),c=require("@moneko/css"),u=require("solid-element"),m=require("./styles");require("../pagination");const p=d(require("../theme"));function d(e){return e&&e.__esModule?e:{default:e}}const g=(0,a.template)("<span>"),h=(0,a.template)("<style>"),f=(0,a.template)('<caption class="table-title"><slot name="title">'),v=(0,a.template)('<th class="table-cell">'),b=(0,a.template)('<tfoot class="table-foot"><tr>'),y=(0,a.template)("<table><thead><tr></tr></thead><tbody>"),_=(0,a.template)('<n-pagination class="table-pagination">',!0,!1),w=(0,a.template)("<th>"),S=(0,a.template)("<tr>"),$=(0,a.template)('<span class="empty-val">'),C=(0,a.template)("<td>"),P={page:1,pageSize:20,total:0,totalText:void 0,size:void 0};function x(e){let{baseStyle:t}=p.default,[r,n]=(0,l.splitProps)(e,["class","css","loading","summary","summaryText","columns","data","emptyVal","title","align","char","charoff","valign","pagination","size"]),[u]=(0,l.splitProps)(r,["align","char","charoff","valign"]),[d,x]=(0,l.createSignal)(!1),[q,z]=(0,l.createSignal)(1),[j,k]=(0,l.createSignal)(20),[O,T]=(0,l.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,l.createEffect)(()=>{(0,l.batch)(()=>{r.pagination&&(z(r.pagination.page||1),k(r.pagination.pageSize||20),T(r.pagination.total||0))})});let E=(0,l.createMemo)(()=>Object.assign(P,r.pagination)),F=(0,l.createMemo)(()=>{let e=[],t=!1;for(let n in r.columns)if(Object.prototype.hasOwnProperty.call(r.columns,n)){let l=r.columns[n],o=Object.assign({key:n,originKey:n,label:l.toString()},(0,i.default)(l)&&{label:"order"===l.type&&"序号"||n,...l});"order"===o.type&&(t=!0,o.render=function(e,t,r){return(()=>{let e=g();return(0,a.insert)(e,()=>(q()-1)*j()+r+1),e})()}),e.push(o)}return(0,l.untrack)(d)!==t&&x(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,a.insert)(e,t,null),(0,a.insert)(e,m.styles,null),(0,a.insert)(e,()=>(0,c.css)(r.css),null),e})(),(()=>{let e=y(),t=e.firstChild,i=t.firstChild,m=t.nextSibling;return(0,a.spread)(e,(0,a.mergeProps)(n,{get class(){return(0,c.cx)("table",r.size)},part:"table"}),!1,!0),(0,a.insert)(e,(0,a.createComponent)(l.Show,{get when(){return r.title},get children(){let e=f(),t=e.firstChild;return t._$owner=(0,a.getOwner)(),(0,a.insert)(t,()=>r.title),e}}),t),(0,a.spread)(t,(0,a.mergeProps)(u,{class:"table-head"}),!1,!0),(0,a.insert)(i,(0,a.createComponent)(l.For,{get each(){return F()},children:e=>{let t=M(e);return(()=>{let r=w();return(0,a.spread)(r,(0,a.mergeProps)(t,{class:"table-cell"}),!1,!0),(0,a.insert)(r,()=>e.label),r})()}})),(0,a.spread)(m,(0,a.mergeProps)(u,{class:"table-body"}),!1,!0),(0,a.insert)(m,(0,a.createComponent)(l.For,{get each(){return r.data},children:(e,t)=>(()=>{let n=S();return(0,a.insert)(n,(0,a.createComponent)(l.For,{get each(){return F()},children:n=>{let i=M(n),o=(0,l.createMemo)(()=>{if("order"===n.type){let e=E();return(e.page-1)*e.pageSize+t()+1}let l=e[n.key];return(0,s.default)(l)||null===l?(()=>{let e=$();return(0,a.insert)(e,()=>r.emptyVal),e})():l});return(()=>{let r=C();return(0,a.spread)(r,(0,a.mergeProps)(i,{class:"table-cell"}),!1,!0),(0,a.insert)(r,(0,a.createComponent)(l.Show,{get when(){return n.render},get fallback(){return(0,a.createComponent)(o,{})},get children(){return n.render?.(e[n.key],e,t())}})),r})()}})),n})()})),(0,a.insert)(e,(0,a.createComponent)(l.Show,{get when(){return r.summary?.length},get children(){let e=b(),t=e.firstChild;return(0,a.spread)(e,u,!1,!0),(0,a.insert)(t,(0,a.createComponent)(l.Show,{get when(){return d()},get children(){let e=v();return(0,a.spread)(e,(0,a.mergeProps)(()=>M(F()[0])),!1,!0),(0,a.insert)(e,()=>r.summaryText),e}}),null),(0,a.insert)(t,(0,a.createComponent)(l.For,{get each(){return F().filter(e=>!e.type||!["order"].includes(e.type))},children:e=>{let t=M(e),n=(0,l.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,o.default)(r)||(0,s.default)(r)||null===r?e:e+t[n]},0)}return null});return(()=>{let e=C();return(0,a.spread)(e,(0,a.mergeProps)(t,{class:"table-cell"}),!1,!0),(0,a.insert)(e,n),e})()}}),null),e}}),null),e})(),(0,a.createComponent)(l.Show,{get when(){return r.pagination},get children(){let e=_();return(0,a.addEventListener)(e,"change",A),e._$owner=(0,a.getOwner)(),(0,a.effect)(t=>{let n=q(),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,u.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,l.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,l.createEffect)(()=>{r.removeAttribute("css"),r.removeAttribute("title"),r.removeAttribute("data")}),(0,a.createComponent)(x,n)});const q=x;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/table/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/table/index.tsx"],"sourcesContent":["import {\n For,\n Show,\n batch,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { isObject, isString, isUndefined } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { styles } from './styles';\nimport '../pagination';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement, PaginationProps } from '..';\n\ntype Col = Column<Record<string, Any>>;\nconst defaultPagination = { page: 1, pageSize: 20, total: 0, totalText: void 0, size: void 0 };\n\nfunction Table(_: TableProps) {\n const { baseStyle } = theme;\n const [local, other] = splitProps(_, [\n 'class',\n 'css',\n 'loading',\n 'summary',\n 'summaryText',\n 'columns',\n 'data',\n 'emptyVal',\n 'title',\n 'align',\n 'char',\n 'charoff',\n 'valign',\n 'pagination',\n 'size',\n ]);\n const [layout] = splitProps(local, ['align', 'char', 'charoff', 'valign']);\n const [hasOrder, setHasOrder] = createSignal(false);\n const [page, setPage] = createSignal(1);\n const [pageSize, setPageSize] = createSignal(20);\n const [total, setTotal] = createSignal(0);\n\n createEffect(() => {\n batch(() => {\n if (local.pagination) {\n setPage(local.pagination.page || 1);\n setPageSize(local.pagination.pageSize || 20);\n setTotal(local.pagination.total || 0);\n }\n });\n });\n\n function getLayout(col: Col) {\n return {\n width: col.width,\n align: col.align,\n valign: col.valign,\n char: col.char,\n charoff: col.charoff,\n colspan: col.colspan,\n rowspan: col.rowspan,\n };\n }\n function sum(arr: Required<TableProps>['data'], key: string) {\n return arr.reduce(function (prev, curr) {\n const next = curr[key];\n\n if (isString(next) || isUndefined(next) || next === null) {\n return prev;\n }\n return prev + curr[key];\n }, 0);\n }\n const pagination = createMemo(() => Object.assign(defaultPagination, local.pagination));\n const columns = createMemo(() => {\n const cols: Required<Col>[] = [];\n let _hasOrder = false;\n\n for (const key in local.columns) {\n if (Object.prototype.hasOwnProperty.call(local.columns, key)) {\n const col = local.columns[key];\n const _col: Col = Object.assign(\n { key, originKey: key, label: col.toString() },\n isObject(col) && {\n label: (col.type === 'order' && '序号') || key,\n ...col,\n },\n );\n\n if (_col.type === 'order') {\n _hasOrder = true;\n _col.render = function (_val: unknown, _row: unknown, i: number) {\n return <span>{(page() - 1) * pageSize() + i + 1}</span>;\n };\n }\n cols.push(_col as Required<Col>);\n }\n }\n if (untrack(hasOrder) !== _hasOrder) {\n setHasOrder(_hasOrder);\n }\n return cols;\n });\n\n function handlePageChange(e: CustomEvent<[page: number, pageSize: number]>) {\n if (local.pagination) {\n setPage(e.detail[0]);\n setPageSize(e.detail[1]);\n local.pagination.onChange?.(...e.detail);\n }\n }\n\n return (\n <>\n <style>\n {baseStyle()}\n {styles}\n {css(local.css)}\n </style>\n <table {...other} class={cx('table', local.size)} part=\"table\">\n <Show when={local.title}>\n <caption class=\"table-title\">\n <slot name=\"title\">{local.title}</slot>\n </caption>\n </Show>\n <thead {...layout} class=\"table-head\">\n <tr>\n <For each={columns()}>\n {(col) => {\n const _layout = getLayout(col);\n\n return (\n <th {..._layout} class=\"table-cell\">\n {col.label}\n </th>\n );\n }}\n </For>\n </tr>\n </thead>\n <tbody {...layout} class=\"table-body\">\n <For each={local.data}>\n {(row, i) => {\n return (\n <tr>\n <For each={columns()}>\n {(col) => {\n const _layout = getLayout(col);\n const Row = createMemo(() => {\n if (col.type === 'order') {\n const _pagination = pagination();\n\n return (_pagination.page - 1) * _pagination.pageSize + i() + 1;\n }\n const val = row[col.key];\n const isEmpty = isUndefined(val) || val === null;\n\n if (isEmpty) {\n return <span class=\"empty-val\">{local.emptyVal}</span>;\n }\n return val;\n });\n\n return (\n <td {..._layout} class=\"table-cell\">\n <Show when={col.render} fallback={<Row />}>\n {col.render?.(row[col.key], row, i())}\n </Show>\n </td>\n );\n }}\n </For>\n </tr>\n );\n }}\n </For>\n </tbody>\n <Show when={local.summary?.length}>\n <tfoot class=\"table-foot\" {...layout}>\n <tr>\n <Show when={hasOrder()}>\n <th class=\"table-cell\" {...getLayout(columns()[0])}>\n {local.summaryText}\n </th>\n </Show>\n <For each={columns().filter((c) => !c.type || !['order'].includes(c.type))}>\n {(col) => {\n const _layout = getLayout(col);\n const val = createMemo(() => {\n if (local.data?.length && local.summary?.includes(col.originKey)) {\n return sum(local.data, col.key);\n }\n return null;\n });\n\n return (\n <td {..._layout} class=\"table-cell\">\n {val()}\n </td>\n );\n }}\n </For>\n </tr>\n </tfoot>\n </Show>\n </table>\n <Show when={local.pagination}>\n <n-pagination\n class=\"table-pagination\"\n page={page()}\n page-size={pageSize()}\n total={total()}\n total-text={pagination().totalText}\n size={pagination().size || local.size}\n onChange={handlePageChange}\n />\n </Show>\n </>\n );\n}\n\n/** API\n * @since 2.1.0\n */\nexport interface TableProps<T extends Record<string, Any> = Record<string, Any>> extends Cell {\n /** 自定义类名 */\n class?: string;\n /** 自定义类名 */\n css?: string;\n /** 加载中 */\n loading?: boolean;\n /** 单元格值为 null 或 undefined 时的回填\n * @default '-'\n */\n emptyVal?: string;\n /** 栏配置 */\n columns?: Record<string, Column<T> | string>;\n /** 数据源 */\n data?: T[];\n /** 表格标题, 支持直接赋值给 'title' 属性, 或者通过[slot=\"title\"]插槽 */\n title?: JSX.Element | 'slot';\n /** 汇总行 */\n summary?: (keyof T)[];\n /** 汇总行描述\n * @default '合计'\n */\n summaryText?: JSX.Element;\n /** 分页器\n * @default false\n */\n pagination?: PaginationProps | false;\n /** 尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n children?: JSX.Element;\n}\n/** 栏 */\ninterface Column<T extends Record<string, Any>> extends Cell {\n /** 自定义取值的 key */\n key?: keyof T;\n /** 原始 key */\n originKey?: keyof T;\n /** 单元格表头标题 */\n label?: JSX.Element;\n /** 自定义渲染单元格 */\n render?(item: T[keyof T], row: T, index: number): JSX.Element;\n /** 单元格横跨的列数 */\n colspan?: number;\n /** 单元格横跨的行数 */\n rowspan?: number;\n /** 设置为 'order' 时则当作序号行 */\n type?: 'order';\n /** 单元格宽 */\n width?: number;\n}\n\n/** 单元格布局排列 */\ninterface Cell {\n /** 单元格内容的水平对齐方式\n * @default 'left'\n */\n align?: keyof typeof Align;\n /** 规定根据哪个字符来进行文本对齐 */\n char?: string;\n /** 规定第一个对齐字符的偏移量 */\n charoff?: number;\n /** 单元格内容的垂直对齐方式\n * @default 'middle'\n */\n valign?: keyof typeof Valign;\n}\n/** 水平对齐方式 */\nenum Align {\n /** 左对齐 */\n left = 'left',\n /** 右对齐 */\n right = 'right',\n /** 居中对齐 */\n center = 'center',\n /** 对行进行伸展,这样每行都可以有相等的长度 */\n justify = 'justify',\n /** 将内容对准指定字符 */\n char = 'char',\n}\n/** 垂直对齐方式 */\nenum Valign {\n /** 上对齐 */\n top = 'top',\n /** 居中对齐 */\n middle = 'middle',\n /** 下对齐 */\n bottom = 'bottom',\n /** 与基线对齐 */\n baseline = 'baseline',\n}\nexport type TableElement = CustomElement<TableProps>;\n\ncustomElement<TableProps>(\n 'n-table',\n {\n class: void 0,\n css: void 0,\n loading: false,\n columns: {},\n data: [],\n emptyVal: '-',\n title: void 0,\n char: void 0,\n charoff: void 0,\n align: Align.left,\n valign: Valign.middle,\n summary: void 0,\n summaryText: '合计',\n pagination: void 0,\n size: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n columns: el.columns,\n data: el.data,\n pagination: el.pagination,\n summary: el.summary,\n summaryText: el.summaryText,\n },\n _,\n {\n title: !!el.querySelector(\"[slot='title']\") || _.title,\n },\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.removeAttribute('title');\n el.removeAttribute('data');\n });\n return createComponent(Table, props);\n },\n);\nexport default Table;\n"],"names":["Align","Valign","defaultPagination","page","pageSize","total","totalText","size","Table","_","baseStyle","theme","local","other","splitProps","layout","hasOrder","setHasOrder","createSignal","setPage","setPageSize","setTotal","getLayout","col","width","align","valign","char","charoff","colspan","rowspan","createEffect","batch","pagination","createMemo","Object","assign","columns","cols","_hasOrder","key","prototype","hasOwnProperty","call","_col","originKey","label","toString","isObject","type","render","_val","_row","i","push","untrack","handlePageChange","e","detail","onChange","styles","css","cx","Show","title","For","_layout","data","row","Row","_pagination","val","isUndefined","emptyVal","summary","length","summaryText","filter","c","includes","arr","reduce","prev","curr","next","isString","customElement","class","loading","opt","el","element","props","mergeProps","querySelector","removeAttribute","createComponent"],"rangeMappings":"","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../components/table/index.tsx"],"sourcesContent":["import {\n For,\n Show,\n batch,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { isObject, isString, isUndefined } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { styles } from './styles';\nimport '../pagination';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement, PaginationProps } from '..';\n\ntype Col = Column<Record<string, Any>>;\nconst defaultPagination = { page: 1, pageSize: 20, total: 0, totalText: void 0, size: void 0 };\n\nfunction Table(_: TableProps) {\n const { baseStyle } = theme;\n const [local, other] = splitProps(_, [\n 'class',\n 'css',\n 'loading',\n 'summary',\n 'summaryText',\n 'columns',\n 'data',\n 'emptyVal',\n 'title',\n 'align',\n 'char',\n 'charoff',\n 'valign',\n 'pagination',\n 'size',\n ]);\n const [layout] = splitProps(local, ['align', 'char', 'charoff', 'valign']);\n const [hasOrder, setHasOrder] = createSignal(false);\n const [page, setPage] = createSignal(1);\n const [pageSize, setPageSize] = createSignal(20);\n const [total, setTotal] = createSignal(0);\n\n createEffect(() => {\n batch(() => {\n if (local.pagination) {\n setPage(local.pagination.page || 1);\n setPageSize(local.pagination.pageSize || 20);\n setTotal(local.pagination.total || 0);\n }\n });\n });\n\n function getLayout(col: Col) {\n return {\n width: col.width,\n align: col.align,\n valign: col.valign,\n char: col.char,\n charoff: col.charoff,\n colspan: col.colspan,\n rowspan: col.rowspan,\n };\n }\n function sum(arr: Required<TableProps>['data'], key: string) {\n return arr.reduce(function (prev, curr) {\n const next = curr[key];\n\n if (isString(next) || isUndefined(next) || next === null) {\n return prev;\n }\n return prev + curr[key];\n }, 0);\n }\n const pagination = createMemo(() => Object.assign(defaultPagination, local.pagination));\n const columns = createMemo(() => {\n const cols: Required<Col>[] = [];\n let _hasOrder = false;\n\n for (const key in local.columns) {\n if (Object.prototype.hasOwnProperty.call(local.columns, key)) {\n const col = local.columns[key];\n const _col: Col = Object.assign(\n { key, originKey: key, label: col.toString() },\n isObject(col) && {\n label: (col.type === 'order' && '序号') || key,\n ...col,\n },\n );\n\n if (_col.type === 'order') {\n _hasOrder = true;\n _col.render = function (_val: unknown, _row: unknown, i: number) {\n return <span>{(page() - 1) * pageSize() + i + 1}</span>;\n };\n }\n cols.push(_col as Required<Col>);\n }\n }\n if (untrack(hasOrder) !== _hasOrder) {\n setHasOrder(_hasOrder);\n }\n return cols;\n });\n\n function handlePageChange(e: CustomEvent<[page: number, pageSize: number]>) {\n if (local.pagination) {\n setPage(e.detail[0]);\n setPageSize(e.detail[1]);\n local.pagination.onChange?.(...e.detail);\n }\n }\n\n return (\n <>\n <style>\n {baseStyle()}\n {styles}\n {css(local.css)}\n </style>\n <table {...other} class={cx('table', local.size)} part=\"table\">\n <Show when={local.title}>\n <caption class=\"table-title\">\n <slot name=\"title\">{local.title}</slot>\n </caption>\n </Show>\n <thead {...layout} class=\"table-head\">\n <tr>\n <For each={columns()}>\n {(col) => {\n const _layout = getLayout(col);\n\n return (\n <th {..._layout} class=\"table-cell\">\n {col.label}\n </th>\n );\n }}\n </For>\n </tr>\n </thead>\n <tbody {...layout} class=\"table-body\">\n <For each={local.data}>\n {(row, i) => {\n return (\n <tr>\n <For each={columns()}>\n {(col) => {\n const _layout = getLayout(col);\n const Row = createMemo(() => {\n if (col.type === 'order') {\n const _pagination = pagination();\n\n return (_pagination.page - 1) * _pagination.pageSize + i() + 1;\n }\n const val = row[col.key];\n const isEmpty = isUndefined(val) || val === null;\n\n if (isEmpty) {\n return <span class=\"empty-val\">{local.emptyVal}</span>;\n }\n return val;\n });\n\n return (\n <td {..._layout} class=\"table-cell\">\n <Show when={col.render} fallback={<Row />}>\n {col.render?.(row[col.key], row, i())}\n </Show>\n </td>\n );\n }}\n </For>\n </tr>\n );\n }}\n </For>\n </tbody>\n <Show when={local.summary?.length}>\n <tfoot class=\"table-foot\" {...layout}>\n <tr>\n <Show when={hasOrder()}>\n <th class=\"table-cell\" {...getLayout(columns()[0])}>\n {local.summaryText}\n </th>\n </Show>\n <For each={columns().filter((c) => !c.type || !['order'].includes(c.type))}>\n {(col) => {\n const _layout = getLayout(col);\n const val = createMemo(() => {\n if (local.data?.length && local.summary?.includes(col.originKey)) {\n return sum(local.data, col.key);\n }\n return null;\n });\n\n return (\n <td {..._layout} class=\"table-cell\">\n {val()}\n </td>\n );\n }}\n </For>\n </tr>\n </tfoot>\n </Show>\n </table>\n <Show when={local.pagination}>\n <n-pagination\n class=\"table-pagination\"\n page={page()}\n page-size={pageSize()}\n total={total()}\n total-text={pagination().totalText}\n size={pagination().size || local.size}\n onChange={handlePageChange}\n />\n </Show>\n </>\n );\n}\n\n/** API\n * @since 2.1.0\n */\nexport interface TableProps<T extends Record<string, Any> = Record<string, Any>> extends Cell {\n /** 自定义类名 */\n class?: string;\n /** 自定义类名 */\n css?: string;\n /** 加载中 */\n loading?: boolean;\n /** 单元格值为 null 或 undefined 时的回填\n * @default '-'\n */\n emptyVal?: string;\n /** 栏配置 */\n columns?: Record<string, Column<T> | string>;\n /** 数据源 */\n data?: T[];\n /** 表格标题, 支持直接赋值给 'title' 属性, 或者通过[slot=\"title\"]插槽 */\n title?: JSX.Element | 'slot';\n /** 汇总行 */\n summary?: (keyof T)[];\n /** 汇总行描述\n * @default '合计'\n */\n summaryText?: JSX.Element;\n /** 分页器\n * @default false\n */\n pagination?: PaginationProps | false;\n /** 尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n children?: JSX.Element;\n}\n/** 栏 */\ninterface Column<T extends Record<string, Any>> extends Cell {\n /** 自定义取值的 key */\n key?: keyof T;\n /** 原始 key */\n originKey?: keyof T;\n /** 单元格表头标题 */\n label?: JSX.Element;\n /** 自定义渲染单元格 */\n render?(item: T[keyof T], row: T, index: number): JSX.Element;\n /** 单元格横跨的列数 */\n colspan?: number;\n /** 单元格横跨的行数 */\n rowspan?: number;\n /** 设置为 'order' 时则当作序号行 */\n type?: 'order';\n /** 单元格宽 */\n width?: number;\n}\n\n/** 单元格布局排列 */\ninterface Cell {\n /** 单元格内容的水平对齐方式\n * @default 'left'\n */\n align?: keyof typeof Align;\n /** 规定根据哪个字符来进行文本对齐 */\n char?: string;\n /** 规定第一个对齐字符的偏移量 */\n charoff?: number;\n /** 单元格内容的垂直对齐方式\n * @default 'middle'\n */\n valign?: keyof typeof Valign;\n}\n/** 水平对齐方式 */\nenum Align {\n /** 左对齐 */\n left = 'left',\n /** 右对齐 */\n right = 'right',\n /** 居中对齐 */\n center = 'center',\n /** 对行进行伸展,这样每行都可以有相等的长度 */\n justify = 'justify',\n /** 将内容对准指定字符 */\n char = 'char',\n}\n/** 垂直对齐方式 */\nenum Valign {\n /** 上对齐 */\n top = 'top',\n /** 居中对齐 */\n middle = 'middle',\n /** 下对齐 */\n bottom = 'bottom',\n /** 与基线对齐 */\n baseline = 'baseline',\n}\nexport type TableElement = CustomElement<TableProps>;\n\ncustomElement<TableProps>(\n 'n-table',\n {\n class: void 0,\n css: void 0,\n loading: false,\n columns: {},\n data: [],\n emptyVal: '-',\n title: void 0,\n char: void 0,\n charoff: void 0,\n align: Align.left,\n valign: Valign.middle,\n summary: void 0,\n summaryText: '合计',\n pagination: void 0,\n size: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n columns: el.columns,\n data: el.data,\n pagination: el.pagination,\n summary: el.summary,\n summaryText: el.summaryText,\n },\n _,\n {\n title: !!el.querySelector(\"[slot='title']\") || _.title,\n },\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.removeAttribute('title');\n el.removeAttribute('data');\n });\n return <Table {...props} />;\n },\n);\nexport default Table;\n"],"names":["Align","Valign","defaultPagination","page","pageSize","total","totalText","size","Table","_","baseStyle","theme","local","other","splitProps","layout","hasOrder","setHasOrder","createSignal","setPage","setPageSize","setTotal","getLayout","col","width","align","valign","char","charoff","colspan","rowspan","createEffect","batch","pagination","createMemo","Object","assign","columns","cols","_hasOrder","key","prototype","hasOwnProperty","call","_col","originKey","label","toString","isObject","type","render","_val","_row","i","push","untrack","handlePageChange","e","detail","onChange","styles","css","cx","Show","title","For","_layout","data","row","Row","_pagination","val","isUndefined","emptyVal","summary","length","summaryText","filter","c","includes","arr","reduce","prev","curr","next","isString","customElement","class","loading","opt","el","element","props","mergeProps","querySelector","removeAttribute"],"rangeMappings":"","mappings":"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"}
|
package/lib/tabs/index.d.ts
CHANGED
|
@@ -32,6 +32,11 @@ export interface TabsProps {
|
|
|
32
32
|
left?: JSX.Element | (() => JSX.Element | (() => JSX.Element));
|
|
33
33
|
right?: JSX.Element | (() => JSX.Element | (() => JSX.Element));
|
|
34
34
|
};
|
|
35
|
+
/** 动画
|
|
36
|
+
* @since 2.8.2
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
animated?: boolean;
|
|
35
40
|
}
|
|
36
41
|
export interface TabOption extends Omit<BaseOption, 'options'> {
|
|
37
42
|
/** 内容 */
|