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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{default:function(){return C},defaultColorPaletteProps:function(){return y}});const e=require("solid-js/web"),t=require("solid-js"),n=d(require("@moneko/common/lib/colorParse")),r=d(require("@moneko/common/lib/isFunction")),l=d(require("@moneko/common/lib/passiveSupported")),a=d(require("@moneko/common/lib/setClipboard")),i=d(require("@moneko/common/lib/throttle")),o=require("@moneko/css"),u=require("solid-element"),s=require("./style");require("../dropdown"),require("../input"),require("../input-number");const c=d(require("../theme"));function d(e){return e&&e.__esModule?e:{default:e}}const p=(0,e.template)("<style>"),m=(0,e.template)("<n-input>",!0,!1),f=(0,e.template)('<i class="eye-dropper">'),v=(0,e.template)('<div><div class="picker"></div><div class="chooser"><div class="range"><input class="slider hue" min="0" max="360" type="range"><input class="slider opacity" min="0" max="1" step="0.01" type="range"></div><div class="preview"></div></div><div class="form"><n-dropdown placement="right" trigger="click"><span class="switch"></span></n-dropdown></div><div class="color">',!0,!1),g=(0,e.template)("<n-input-number>",!0,!1),h=(0,e.template)("<i>");function b(u){let d;let{baseStyle:b}=c.default,y=(0,t.mergeProps)({defaultValue:"#5794ff"},u),C=[{label:"RGBA",value:"rgba",handleClosed:!1},{label:"HSLA",value:"hsla",handleClosed:!1},{label:"HEXA",value:"hexa",handleClosed:!1}],w=["#f44336","#E91E63","#9C27B0","#673AB7","#3F51B5","#2196F3","#00BCD4","#009688","#4CAF50","#CDDC39","#FF9800","#795548","#607D8B"],x={class:"input",size:"small",css:".input{text-align:center;font-size:12px;}"},[E,k]=(0,t.createSignal)((0,n.default)(y.value||y.defaultValue)),[S,q]=(0,t.createSignal)(!1);function P(e){return e?Number((100*e).toFixed()):e}function $(e){let t=e;return"string"==typeof e&&(t=e.replace(/[^\d]/g,"")),t/100}let L=(0,t.createMemo)(()=>{var e;let t=E(),n=t[e=t.type,`to${e[0].toUpperCase()+e.slice(1)}`]();return(0,r.default)(y.onChange)&&n.toString()!==y.value&&y.onChange(n.toString()),n});function M(e=y.defaultValue){(0,t.untrack)(L).toString()!==e&&k((0,n.default)(e))}function B(e){e.target&&(e.target.value=e.detail)}function F(e){e.target?.value&&M(e.target.value)}function D(e){"Enter"===e.key&&"string"==typeof e.target?.value&&M(e.target.value)}function _(e){if(d){let{x:n,y:r,width:l,height:a}=d.getBoundingClientRect(),i=(0,t.untrack)(E),o=i.value;o[1]=Math.floor(Math.min(Math.max(0,(e.clientX-n)/l*100),100)),o[2]=Math.floor(100-Math.min(Math.max(0,(e.clientY-r)/a*100),100)),k({...i,value:o})}}function O(e,r,l){if("number"==typeof r){let a=(0,t.untrack)(E),i=3===e||"hsva"===l,o=i?a.value:(0,t.untrack)(L);o[e]=r||0,i?k({...a,value:o}):k((0,n.default)(o.toString()))}}function j(e){q(!0),_(e)}function A(){q(!1)}function H(e){k(t=>({...t,type:e.detail[0]}))}function R(e){(0,a.default)((0,t.untrack)(L).toString(),e.target)}async function N(){if(window.EyeDropper){let e=await new window.EyeDropper().open();e.sRGBHex&&M(e.sRGBHex);return}}let V=(0,t.createMemo)(()=>{let e=E(),t=e.value;return`.palette {--c:${e.toRgbaString()};--h:${t[0]};--s:${t[1]};--v:${t[2]};--a:${t[3]};}`});return(0,t.createEffect)(()=>{(0,i.default)(M,8)(y.value)}),(0,t.createEffect)(()=>{S()&&document.body.addEventListener("mousemove",_,{passive:l.default}),(0,t.onCleanup)(()=>{document.body.removeEventListener("mousemove",_,!1)})}),(0,t.onMount)(()=>{document.body.addEventListener("mouseup",A,{passive:l.default})}),(0,t.onCleanup)(()=>{document.body.removeEventListener("mouseup",A,!1)}),[(()=>{let t=p();return(0,e.insert)(t,b,null),(0,e.insert)(t,s.style,null),(0,e.insert)(t,V,null),(0,e.insert)(t,()=>(0,o.css)(y.css),null),t})(),(()=>{let n=v(),r=n.firstChild,l=d,a=r.nextSibling,i=a.firstChild,u=i.firstChild,c=u.nextSibling,p=i.nextSibling,b=a.nextSibling,k=b.firstChild,S=k.firstChild,q=b.nextSibling;return(0,e.addEventListener)(r,"mousedown",j,!0),"function"==typeof l?(0,e.use)(l,r):d=r,u.$$input=e=>O(0,Number(e.target.value),"hsva"),c.$$input=e=>O(3,Number(e.target.value)),(0,e.addEventListener)(p,"click",R,!0),(0,e.insert)(b,(0,e.createComponent)(t.Show,{get when(){return"hexa"===E().type},get fallback(){return(0,e.createComponent)(t.Index,{get each(){return L()},children:(n,r)=>{let l=Object.assign({},x,3===r&&{step:.01,formatter:P,parse:$});return(()=>{let a=g();return(0,e.spread)(a,(0,e.mergeProps)(l,{get value(){return n()},get max(){return(0,t.untrack)(L).max[r]},min:0,onChange:e=>{O(r,e.detail)}}),!1,!1),a._$owner=(0,e.getOwner)(),a})()}})},get children(){let t=m();return(0,e.spread)(t,(0,e.mergeProps)(x,{get value(){return E().toHexaString()},onChange:B,onBlur:F,onKeyUp:D}),!1,!1),t._$owner=(0,e.getOwner)(),t}}),k),(0,e.addEventListener)(k,"change",H),k.css=s.switchCss,k.items=C,k._$owner=(0,e.getOwner)(),(0,e.insert)(S,()=>E().type),(0,e.insert)(q,(0,e.createComponent)(t.Show,{get when(){return window.EyeDropper},get fallback(){return(()=>{let t=h();return(0,e.addEventListener)(t,"click",M.bind(null,"rgba(168,16,16,0.15)"),!0),t.style.setProperty("--c","rgba(168,16,16,0.15)"),t})()},get children(){let t=f();return(0,e.addEventListener)(t,"click",N,!0),t.style.setProperty("--c","transparent"),t}}),null),(0,e.insert)(q,(0,e.createComponent)(t.For,{each:w,children:t=>(()=>{let n=h();return(0,e.addEventListener)(n,"click",M.bind(null,t),!0),null!=t?n.style.setProperty("--c",t):n.style.removeProperty("--c"),n})()}),null),(0,e.effect)(()=>(0,e.className)(n,(0,o.cx)("palette",y.class))),(0,e.effect)(()=>u.value=E().value[0]),(0,e.effect)(()=>c.value=E().value[3]),(0,e.effect)(()=>k.value=E().type),n})()]}const y={class:void 0,style:void 0,css:void 0,value:void 0,defaultValue:void 0,onChange:void 0};(0,u.customElement)("n-color-palette",y,(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{default:function(){return C},defaultColorPaletteProps:function(){return y}});const e=require("solid-js/web"),t=require("solid-js"),n=d(require("@moneko/common/lib/colorParse")),r=d(require("@moneko/common/lib/isFunction")),l=d(require("@moneko/common/lib/passiveSupported")),a=d(require("@moneko/common/lib/setClipboard")),i=d(require("@moneko/common/lib/throttle")),o=require("@moneko/css"),u=require("solid-element"),s=require("./style");require("../dropdown"),require("../input"),require("../input-number");const c=d(require("../theme"));function d(e){return e&&e.__esModule?e:{default:e}}const p=(0,e.template)("<style>"),m=(0,e.template)("<n-input>",!0,!1),f=(0,e.template)('<i class="eye-dropper">'),v=(0,e.template)('<div><div class="picker"></div><div class="chooser"><div class="range"><input class="slider hue" min="0" max="360" type="range"><input class="slider opacity" min="0" max="1" step="0.01" type="range"></div><div class="preview"></div></div><div class="form"><n-dropdown placement="right" trigger="click"><span class="switch"></span></n-dropdown></div><div class="color">',!0,!1),g=(0,e.template)("<n-input-number>",!0,!1),h=(0,e.template)("<i>");function b(u){let d;let{baseStyle:b}=c.default,y=(0,t.mergeProps)({defaultValue:"#5794ff"},u),C=[{label:"RGBA",value:"rgba",handleClosed:!1},{label:"HSLA",value:"hsla",handleClosed:!1},{label:"HEXA",value:"hexa",handleClosed:!1}],w=["#f44336","#E91E63","#9C27B0","#673AB7","#3F51B5","#2196F3","#00BCD4","#009688","#4CAF50","#CDDC39","#FF9800","#795548","#607D8B"],x={class:"input",size:"small",css:".input{text-align:center;font-size:12px;}"},[E,k]=(0,t.createSignal)((0,n.default)(y.value||y.defaultValue)),[S,q]=(0,t.createSignal)(!1);function P(e){return e?Number((100*e).toFixed()):e}function $(e){let t=e;return"string"==typeof e&&(t=e.replace(/[^\d]/g,"")),t/100}let L=(0,t.createMemo)(()=>{var e;let t=E(),n=t[e=t.type,`to${e[0].toUpperCase()+e.slice(1)}`]();return(0,r.default)(y.onChange)&&n.toString()!==y.value&&y.onChange(n.toString()),n});function M(e=y.defaultValue){(0,t.untrack)(L).toString()!==e&&k((0,n.default)(e))}function B(e){e.target&&(e.target.value=e.detail)}function F(e){e.target?.value&&M(e.target.value)}function D(e){"Enter"===e.key&&"string"==typeof e.target?.value&&M(e.target.value)}function _(e){if(d){let{x:n,y:r,width:l,height:a}=d.getBoundingClientRect(),i=(0,t.untrack)(E),o=i.value;o[1]=Math.floor(Math.min(Math.max(0,(e.clientX-n)/l*100),100)),o[2]=Math.floor(100-Math.min(Math.max(0,(e.clientY-r)/a*100),100)),k({...i,value:o})}}function O(e,r,l){if("number"==typeof r){let a=(0,t.untrack)(E),i=3===e||"hsva"===l,o=i?a.value:(0,t.untrack)(L);o[e]=r||0,i?k({...a,value:o}):k((0,n.default)(o.toString()))}}function j(e){q(!0),_(e)}function A(){q(!1)}function H(e){k(t=>({...t,type:e.detail[0]}))}function R(e){(0,a.default)((0,t.untrack)(L).toString(),e.target)}async function N(){if(window.EyeDropper){let e=await new window.EyeDropper().open();e.sRGBHex&&M(e.sRGBHex);return}}let V=(0,t.createMemo)(()=>{let e=E(),t=e.value;return`.palette {--c:${e.toRgbaString()};--h:${t[0]};--s:${t[1]};--v:${t[2]};--a:${t[3]};}`});return(0,t.createEffect)(()=>{(0,i.default)(M,8)(y.value)}),(0,t.createEffect)(()=>{S()&&document.body.addEventListener("mousemove",_,{passive:l.default}),(0,t.onCleanup)(()=>{document.body.removeEventListener("mousemove",_,!1)})}),(0,t.onMount)(()=>{document.body.addEventListener("mouseup",A,{passive:l.default})}),(0,t.onCleanup)(()=>{document.body.removeEventListener("mouseup",A,!1)}),[(()=>{let t=p();return(0,e.insert)(t,b,null),(0,e.insert)(t,s.style,null),(0,e.insert)(t,V,null),(0,e.insert)(t,()=>(0,o.css)(y.css),null),t})(),(()=>{let n=v(),r=n.firstChild,l=d,a=r.nextSibling,i=a.firstChild,u=i.firstChild,c=u.nextSibling,p=i.nextSibling,b=a.nextSibling,k=b.firstChild,S=k.firstChild,q=b.nextSibling;return(0,e.addEventListener)(r,"mousedown",j,!0),"function"==typeof l?(0,e.use)(l,r):d=r,u.$$input=e=>O(0,Number(e.target.value),"hsva"),c.$$input=e=>O(3,Number(e.target.value)),(0,e.addEventListener)(p,"click",R,!0),(0,e.insert)(b,(0,e.createComponent)(t.Show,{get when(){return"hexa"===E().type},get fallback(){return(0,e.createComponent)(t.Index,{get each(){return L()},children:(n,r)=>{let l=Object.assign({},x,3===r&&{step:.01,formatter:P,parse:$});return(()=>{let a=g();return(0,e.spread)(a,(0,e.mergeProps)(l,{get value(){return n()},get max(){return(0,t.untrack)(L).max[r]},min:0,onChange:e=>{O(r,e.detail)}}),!1,!1),a._$owner=(0,e.getOwner)(),a})()}})},get children(){let t=m();return(0,e.spread)(t,(0,e.mergeProps)(x,{get value(){return E().toHexaString()},onChange:B,onBlur:F,onKeyUp:D}),!1,!1),t._$owner=(0,e.getOwner)(),t}}),k),(0,e.addEventListener)(k,"change",H),k.css=s.switchCss,k.items=C,k._$owner=(0,e.getOwner)(),(0,e.insert)(S,()=>E().type),(0,e.insert)(q,(0,e.createComponent)(t.Show,{get when(){return window.EyeDropper},get fallback(){return(()=>{let t=h();return(0,e.addEventListener)(t,"click",M.bind(null,"rgba(168,16,16,0.15)"),!0),t.style.setProperty("--c","rgba(168,16,16,0.15)"),t})()},get children(){let t=f();return(0,e.addEventListener)(t,"click",N,!0),t.style.setProperty("--c","transparent"),t}}),null),(0,e.insert)(q,(0,e.createComponent)(t.For,{each:w,children:t=>(()=>{let n=h();return(0,e.addEventListener)(n,"click",M.bind(null,t),!0),null!=t?n.style.setProperty("--c",t):n.style.removeProperty("--c"),n})()}),null),(0,e.effect)(()=>(0,e.className)(n,(0,o.cx)("palette",y.class))),(0,e.effect)(()=>u.value=E().value[0]),(0,e.effect)(()=>c.value=E().value[3]),(0,e.effect)(()=>k.value=E().type),n})()]}const y={class:void 0,style:void 0,css:void 0,value:void 0,defaultValue:void 0,onChange:void 0};(0,u.customElement)("n-color-palette",y,(n,r)=>{let l=r.element,a=(0,t.mergeProps)({onChange(e){l.dispatchEvent(new CustomEvent("change",{detail:e}))}},n);return(0,e.createComponent)(b,a)});const C=b;(0,e.delegateEvents)(["click","input","mousedown"]);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/color-palette/index.tsx"],"sourcesContent":["import {\n For,\n Index,\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n untrack,\n} from 'solid-js';\nimport {\n type ColorParse,\n type ColorType,\n type HSVA,\n colorParse,\n isFunction,\n passiveSupported,\n setClipboard,\n throttle,\n} from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style, switchCss } from './style';\nimport '../dropdown';\nimport '../input';\nimport '../input-number';\nimport theme from '../theme';\nimport type { CustomElement, InputNumberProps } from '..';\n\nexport interface ColorPaletteProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 颜色值 */\n value?: string;\n /** 默认值\n * @default '#5794ff'\n */\n defaultValue?: string;\n /** 变更时触发的方法 */\n onChange?: (color: string) => void;\n}\nexport type ColorPaletteElement = CustomElement<ColorPaletteProps>;\n\nfunction ColorPalette(_: ColorPaletteProps) {\n const { baseStyle } = theme;\n const props = mergeProps({ defaultValue: '#5794ff' }, _);\n let picker: HTMLDivElement | undefined;\n const types = [\n { label: 'RGBA', value: 'rgba', handleClosed: false },\n { label: 'HSLA', value: 'hsla', handleClosed: false },\n { label: 'HEXA', value: 'hexa', handleClosed: false },\n ];\n const material = [\n '#f44336',\n '#E91E63',\n '#9C27B0',\n '#673AB7',\n '#3F51B5',\n '#2196F3',\n '#00BCD4',\n '#009688',\n '#4CAF50',\n '#CDDC39',\n '#FF9800',\n '#795548',\n '#607D8B',\n ];\n const inputProps: InputNumberProps = {\n class: 'input',\n size: 'small',\n css: '.input{text-align:center;font-size:12px;}',\n };\n const [hsva, setHsva] = createSignal<ColorParse<HSVA>>(\n // eslint-disable-next-line solid/reactivity\n colorParse(props.value || props.defaultValue),\n );\n const [drag, setDrag] = createSignal(false);\n\n type HsvaToColorVoid = 'toHexa' | 'toRgba' | 'toHsla' | 'toCmyk' | 'toHsva';\n\n function formatterOpacity(v?: number | string) {\n return v ? Number(((v as number) * 100).toFixed()) : v;\n }\n function parseOpacity(v?: string | number) {\n let _val = v;\n\n if (typeof v === 'string') {\n _val = v.replace(/[^\\d]/g, '');\n }\n return (_val as number) / 100;\n }\n function capFirst(str: string) {\n return `to${str[0].toUpperCase() + str.slice(1)}` as HsvaToColorVoid;\n }\n const color = createMemo(() => {\n const s = hsva();\n const c = s[capFirst(s.type)]();\n\n if (isFunction(props.onChange) && c.toString() !== props.value) {\n props.onChange(c.toString());\n }\n return c;\n });\n\n function setColor(c = props.defaultValue) {\n if (untrack(color).toString() !== c) {\n setHsva(colorParse(c as string));\n }\n }\n function handleHexa(e: CustomEvent) {\n if (e.target) {\n (e.target as HTMLInputElement).value = e.detail;\n }\n }\n function handleHexaBlur(e: FocusEvent & { target: { value: string } }) {\n if (e.target?.value) {\n setColor(e.target.value);\n }\n }\n function handleHexaEnter(e: KeyboardEvent & { target: { value: string } }) {\n if (e.key === 'Enter' && typeof e.target?.value === 'string') {\n setColor(e.target.value);\n }\n }\n function changeColor(ev: MouseEvent) {\n if (picker) {\n const { x, y, width, height } = picker.getBoundingClientRect();\n const prev = untrack(hsva);\n const next = prev.value;\n\n next[1] = Math.floor(Math.min(Math.max(0, ((ev.clientX - x) / width) * 100), 100));\n next[2] = Math.floor(100 - Math.min(Math.max(0, ((ev.clientY - y) / height) * 100), 100));\n\n setHsva({ ...prev, value: next });\n }\n }\n\n function handleChange(i: number, v?: number, t?: ColorType) {\n if (typeof v === 'number') {\n const prev = untrack(hsva);\n const changeHsv = i === 3 || t === 'hsva';\n const next = changeHsv ? prev.value : (untrack(color) as HSVA);\n\n next[i] = v || 0;\n if (changeHsv) {\n setHsva({\n ...prev,\n value: next,\n });\n } else {\n setHsva(colorParse(next.toString()));\n }\n }\n }\n function mouseDown(e: MouseEvent) {\n setDrag(true);\n changeColor(e);\n }\n function mouseUp() {\n setDrag(false);\n }\n function handleSwitch(e: CustomEvent) {\n setHsva((prev) => ({\n ...prev,\n type: e.detail[0],\n }));\n }\n\n function copy(e: MouseEvent) {\n setClipboard(untrack(color).toString(), e.target as HTMLElement);\n }\n async function eyeDropper() {\n if (window.EyeDropper) {\n const res = await new window.EyeDropper().open();\n\n if (res.sRGBHex) {\n setColor(res.sRGBHex);\n }\n return;\n }\n }\n const colorVar = createMemo(() => {\n const h = hsva(),\n value = h.value;\n\n return `.palette {--c:${h.toRgbaString()};--h:${value[0]};--s:${value[1]};--v:${value[2]};--a:${\n value[3]\n };}`;\n });\n\n createEffect(() => {\n throttle(setColor, 8)(props.value);\n });\n\n createEffect(() => {\n if (drag()) {\n document.body.addEventListener('mousemove', changeColor, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n document.body.removeEventListener('mousemove', changeColor, false);\n });\n });\n onMount(() => {\n document.body.addEventListener('mouseup', mouseUp, {\n passive: passiveSupported,\n });\n });\n onCleanup(() => {\n document.body.removeEventListener('mouseup', mouseUp, false);\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {colorVar()}\n {css(props.css)}\n </style>\n <div class={cx('palette', props.class)}>\n <div ref={picker} class=\"picker\" onMouseDown={mouseDown} />\n <div class=\"chooser\">\n <div class=\"range\">\n <input\n class=\"slider hue\"\n min=\"0\"\n max=\"360\"\n type=\"range\"\n value={hsva().value[0]}\n onInput={(e) => handleChange(0, Number(e.target.value), 'hsva')}\n />\n <input\n class=\"slider opacity\"\n min=\"0\"\n max=\"1\"\n step=\"0.01\"\n type=\"range\"\n value={hsva().value[3]}\n onInput={(e) => handleChange(3, Number(e.target.value))}\n />\n </div>\n <div class=\"preview\" onClick={copy} />\n </div>\n <div class=\"form\">\n <Show\n when={hsva().type === 'hexa'}\n fallback={\n <>\n <Index each={color()}>\n {(n, i) => {\n const inp = Object.assign(\n {},\n inputProps,\n i === 3 && {\n step: 0.01,\n formatter: formatterOpacity,\n parse: parseOpacity,\n },\n );\n\n return (\n <n-input-number\n {...inp}\n value={n() as number}\n max={\n (\n untrack(color) as HSVA & {\n max: [360, 100, 100, 1];\n }\n ).max[i]\n }\n min={0}\n onChange={(e) => {\n handleChange(i, e.detail);\n }}\n />\n );\n }}\n </Index>\n </>\n }\n >\n <n-input\n {...inputProps}\n value={hsva().toHexaString()}\n onChange={handleHexa}\n onBlur={handleHexaBlur}\n onKeyUp={handleHexaEnter}\n />\n </Show>\n <n-dropdown\n css={switchCss}\n value={hsva().type}\n items={types}\n placement=\"right\"\n trigger=\"click\"\n onChange={handleSwitch}\n >\n <span class=\"switch\">{hsva().type}</span>\n </n-dropdown>\n </div>\n <div class=\"color\">\n <Show\n when={window.EyeDropper}\n fallback={\n <i\n style={{ '--c': 'rgba(168,16,16,0.15)' }}\n onClick={setColor.bind(null, 'rgba(168,16,16,0.15)')}\n />\n }\n >\n <i class=\"eye-dropper\" style={{ '--c': 'transparent' }} onClick={eyeDropper} />\n </Show>\n <For each={material}>\n {(c) => <i style={{ '--c': c }} onClick={setColor.bind(null, c)} />}\n </For>\n </div>\n </div>\n </>\n );\n}\n\nexport const defaultColorPaletteProps = {\n class: void 0,\n style: void 0,\n css: void 0,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n};\n\ncustomElement<ColorPaletteProps>('n-color-palette', defaultColorPaletteProps, (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(ColorPalette, props);\n});\n\nexport default ColorPalette;\n"],"names":["defaultColorPaletteProps","ColorPalette","_","picker","baseStyle","theme","props","mergeProps","defaultValue","types","label","value","handleClosed","material","inputProps","class","size","css","hsva","setHsva","createSignal","colorParse","drag","setDrag","formatterOpacity","v","Number","toFixed","parseOpacity","_val","replace","color","createMemo","str","s","c","type","toUpperCase","slice","isFunction","onChange","toString","setColor","untrack","handleHexa","e","target","detail","handleHexaBlur","handleHexaEnter","key","changeColor","ev","x","y","width","height","getBoundingClientRect","prev","next","Math","floor","min","max","clientX","clientY","handleChange","i","t","changeHsv","mouseDown","mouseUp","handleSwitch","copy","setClipboard","eyeDropper","window","EyeDropper","res","open","sRGBHex","colorVar","h","toRgbaString","createEffect","throttle","document","body","addEventListener","passive","passiveSupported","onCleanup","removeEventListener","onMount","style","Show","Index","n","inp","Object","assign","step","formatter","parse","toHexaString","switchCss","bind","For","cx","customElement","opts","el","element","val","dispatchEvent","CustomEvent","createComponent"],"rangeMappings":"","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../components/color-palette/index.tsx"],"sourcesContent":["import {\n For,\n Index,\n Show,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n untrack,\n} from 'solid-js';\nimport {\n type ColorParse,\n type ColorType,\n type HSVA,\n colorParse,\n isFunction,\n passiveSupported,\n setClipboard,\n throttle,\n} from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style, switchCss } from './style';\nimport '../dropdown';\nimport '../input';\nimport '../input-number';\nimport theme from '../theme';\nimport type { CustomElement, InputNumberProps } from '..';\n\nexport interface ColorPaletteProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 颜色值 */\n value?: string;\n /** 默认值\n * @default '#5794ff'\n */\n defaultValue?: string;\n /** 变更时触发的方法 */\n onChange?: (color: string) => void;\n}\nexport type ColorPaletteElement = CustomElement<ColorPaletteProps>;\n\nfunction ColorPalette(_: ColorPaletteProps) {\n const { baseStyle } = theme;\n const props = mergeProps({ defaultValue: '#5794ff' }, _);\n let picker: HTMLDivElement | undefined;\n const types = [\n { label: 'RGBA', value: 'rgba', handleClosed: false },\n { label: 'HSLA', value: 'hsla', handleClosed: false },\n { label: 'HEXA', value: 'hexa', handleClosed: false },\n ];\n const material = [\n '#f44336',\n '#E91E63',\n '#9C27B0',\n '#673AB7',\n '#3F51B5',\n '#2196F3',\n '#00BCD4',\n '#009688',\n '#4CAF50',\n '#CDDC39',\n '#FF9800',\n '#795548',\n '#607D8B',\n ];\n const inputProps: InputNumberProps = {\n class: 'input',\n size: 'small',\n css: '.input{text-align:center;font-size:12px;}',\n };\n const [hsva, setHsva] = createSignal<ColorParse<HSVA>>(\n // eslint-disable-next-line solid/reactivity\n colorParse(props.value || props.defaultValue),\n );\n const [drag, setDrag] = createSignal(false);\n\n type HsvaToColorVoid = 'toHexa' | 'toRgba' | 'toHsla' | 'toCmyk' | 'toHsva';\n\n function formatterOpacity(v?: number | string) {\n return v ? Number(((v as number) * 100).toFixed()) : v;\n }\n function parseOpacity(v?: string | number) {\n let _val = v;\n\n if (typeof v === 'string') {\n _val = v.replace(/[^\\d]/g, '');\n }\n return (_val as number) / 100;\n }\n function capFirst(str: string) {\n return `to${str[0].toUpperCase() + str.slice(1)}` as HsvaToColorVoid;\n }\n const color = createMemo(() => {\n const s = hsva();\n const c = s[capFirst(s.type)]();\n\n if (isFunction(props.onChange) && c.toString() !== props.value) {\n props.onChange(c.toString());\n }\n return c;\n });\n\n function setColor(c = props.defaultValue) {\n if (untrack(color).toString() !== c) {\n setHsva(colorParse(c as string));\n }\n }\n function handleHexa(e: CustomEvent) {\n if (e.target) {\n (e.target as HTMLInputElement).value = e.detail;\n }\n }\n function handleHexaBlur(e: FocusEvent & { target: { value: string } }) {\n if (e.target?.value) {\n setColor(e.target.value);\n }\n }\n function handleHexaEnter(e: KeyboardEvent & { target: { value: string } }) {\n if (e.key === 'Enter' && typeof e.target?.value === 'string') {\n setColor(e.target.value);\n }\n }\n function changeColor(ev: MouseEvent) {\n if (picker) {\n const { x, y, width, height } = picker.getBoundingClientRect();\n const prev = untrack(hsva);\n const next = prev.value;\n\n next[1] = Math.floor(Math.min(Math.max(0, ((ev.clientX - x) / width) * 100), 100));\n next[2] = Math.floor(100 - Math.min(Math.max(0, ((ev.clientY - y) / height) * 100), 100));\n\n setHsva({ ...prev, value: next });\n }\n }\n\n function handleChange(i: number, v?: number, t?: ColorType) {\n if (typeof v === 'number') {\n const prev = untrack(hsva);\n const changeHsv = i === 3 || t === 'hsva';\n const next = changeHsv ? prev.value : (untrack(color) as HSVA);\n\n next[i] = v || 0;\n if (changeHsv) {\n setHsva({\n ...prev,\n value: next,\n });\n } else {\n setHsva(colorParse(next.toString()));\n }\n }\n }\n function mouseDown(e: MouseEvent) {\n setDrag(true);\n changeColor(e);\n }\n function mouseUp() {\n setDrag(false);\n }\n function handleSwitch(e: CustomEvent) {\n setHsva((prev) => ({\n ...prev,\n type: e.detail[0],\n }));\n }\n\n function copy(e: MouseEvent) {\n setClipboard(untrack(color).toString(), e.target as HTMLElement);\n }\n async function eyeDropper() {\n if (window.EyeDropper) {\n const res = await new window.EyeDropper().open();\n\n if (res.sRGBHex) {\n setColor(res.sRGBHex);\n }\n return;\n }\n }\n const colorVar = createMemo(() => {\n const h = hsva(),\n value = h.value;\n\n return `.palette {--c:${h.toRgbaString()};--h:${value[0]};--s:${value[1]};--v:${value[2]};--a:${\n value[3]\n };}`;\n });\n\n createEffect(() => {\n throttle(setColor, 8)(props.value);\n });\n\n createEffect(() => {\n if (drag()) {\n document.body.addEventListener('mousemove', changeColor, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n document.body.removeEventListener('mousemove', changeColor, false);\n });\n });\n onMount(() => {\n document.body.addEventListener('mouseup', mouseUp, {\n passive: passiveSupported,\n });\n });\n onCleanup(() => {\n document.body.removeEventListener('mouseup', mouseUp, false);\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {colorVar()}\n {css(props.css)}\n </style>\n <div class={cx('palette', props.class)}>\n <div ref={picker} class=\"picker\" onMouseDown={mouseDown} />\n <div class=\"chooser\">\n <div class=\"range\">\n <input\n class=\"slider hue\"\n min=\"0\"\n max=\"360\"\n type=\"range\"\n value={hsva().value[0]}\n onInput={(e) => handleChange(0, Number(e.target.value), 'hsva')}\n />\n <input\n class=\"slider opacity\"\n min=\"0\"\n max=\"1\"\n step=\"0.01\"\n type=\"range\"\n value={hsva().value[3]}\n onInput={(e) => handleChange(3, Number(e.target.value))}\n />\n </div>\n <div class=\"preview\" onClick={copy} />\n </div>\n <div class=\"form\">\n <Show\n when={hsva().type === 'hexa'}\n fallback={\n <>\n <Index each={color()}>\n {(n, i) => {\n const inp = Object.assign(\n {},\n inputProps,\n i === 3 && {\n step: 0.01,\n formatter: formatterOpacity,\n parse: parseOpacity,\n },\n );\n\n return (\n <n-input-number\n {...inp}\n value={n() as number}\n max={\n (\n untrack(color) as HSVA & {\n max: [360, 100, 100, 1];\n }\n ).max[i]\n }\n min={0}\n onChange={(e) => {\n handleChange(i, e.detail);\n }}\n />\n );\n }}\n </Index>\n </>\n }\n >\n <n-input\n {...inputProps}\n value={hsva().toHexaString()}\n onChange={handleHexa}\n onBlur={handleHexaBlur}\n onKeyUp={handleHexaEnter}\n />\n </Show>\n <n-dropdown\n css={switchCss}\n value={hsva().type}\n items={types}\n placement=\"right\"\n trigger=\"click\"\n onChange={handleSwitch}\n >\n <span class=\"switch\">{hsva().type}</span>\n </n-dropdown>\n </div>\n <div class=\"color\">\n <Show\n when={window.EyeDropper}\n fallback={\n <i\n style={{ '--c': 'rgba(168,16,16,0.15)' }}\n onClick={setColor.bind(null, 'rgba(168,16,16,0.15)')}\n />\n }\n >\n <i class=\"eye-dropper\" style={{ '--c': 'transparent' }} onClick={eyeDropper} />\n </Show>\n <For each={material}>\n {(c) => <i style={{ '--c': c }} onClick={setColor.bind(null, c)} />}\n </For>\n </div>\n </div>\n </>\n );\n}\n\nexport const defaultColorPaletteProps = {\n class: void 0,\n style: void 0,\n css: void 0,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n};\n\ncustomElement<ColorPaletteProps>('n-color-palette', defaultColorPaletteProps, (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return <ColorPalette {...props} />;\n});\n\nexport default ColorPalette;\n"],"names":["defaultColorPaletteProps","ColorPalette","_","picker","baseStyle","theme","props","mergeProps","defaultValue","types","label","value","handleClosed","material","inputProps","class","size","css","hsva","setHsva","createSignal","colorParse","drag","setDrag","formatterOpacity","v","Number","toFixed","parseOpacity","_val","replace","color","createMemo","str","s","c","type","toUpperCase","slice","isFunction","onChange","toString","setColor","untrack","handleHexa","e","target","detail","handleHexaBlur","handleHexaEnter","key","changeColor","ev","x","y","width","height","getBoundingClientRect","prev","next","Math","floor","min","max","clientX","clientY","handleChange","i","t","changeHsv","mouseDown","mouseUp","handleSwitch","copy","setClipboard","eyeDropper","window","EyeDropper","res","open","sRGBHex","colorVar","h","toRgbaString","createEffect","throttle","document","body","addEventListener","passive","passiveSupported","onCleanup","removeEventListener","onMount","style","Show","Index","n","inp","Object","assign","step","formatter","parse","toHexaString","switchCss","bind","For","cx","customElement","opts","el","element","val","dispatchEvent","CustomEvent"],"rangeMappings":"","mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return p}});const e=require("solid-js/web"),t=require("solid-js"),r=require("@moneko/css"),n=require("solid-element"),o=require("./style");require("../color-palette");const l=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var a=o?Object.getOwnPropertyDescriptor(e,l):null;a&&(a.get||a.set)?Object.defineProperty(n,l,a):n[l]=e[l]}return n.default=e,r&&r.set(e,n),n}(require("../popover"));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}const a=(0,e.template)("<span>"),i=(0,e.template)("<n-color-palette>",!0,!1);function c(n){let[u,c]=(0,t.splitProps)(n,["css","value","defaultValue","onChange","popupClass","popupCss","size"]),[p,s]=(0,t.createSignal)(u.defaultValue);function d(e){void 0===u.value&&s(e.detail),u.onChange?.(e.detail)}(0,t.onMount)(()=>{void 0===u.value&&u.defaultValue&&s(u.defaultValue)}),(0,t.createEffect)(()=>{void 0!==u.value&&u.value!==(0,t.untrack)(p)&&s(u.value)});let f=(0,t.createMemo)(()=>`.color-picker {padding: 10px;inline-size: 216px;}${u.popupCss||""}`),g=(0,t.createMemo)(()=>`${o.style+(u.css||"")}.trigger {--c: ${p()};}`);return(0,e.createComponent)(l.default,(0,e.mergeProps)(c,{arrow:!0,trigger:"click",get content(){return(()=>{let t=i();return(0,e.addEventListener)(t,"change",d),t._$owner=(0,e.getOwner)(),(0,e.effect)(()=>t.value=p()),t})()},get popupClass(){return(0,r.cx)("color-picker",u.popupClass)},get popupCss(){return f()},get css(){return g()},get children(){let t=a();return(0,e.effect)(()=>(0,e.className)(t,(0,r.cx)("trigger",u.size))),t}}))}(0,n.customElement)("n-color-picker",{...l.defaultProps,value:void 0,defaultValue:void 0,onChange:void 0,size:void 0},(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return p}});const e=require("solid-js/web"),t=require("solid-js"),r=require("@moneko/css"),n=require("solid-element"),o=require("./style");require("../color-palette");const l=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var a=o?Object.getOwnPropertyDescriptor(e,l):null;a&&(a.get||a.set)?Object.defineProperty(n,l,a):n[l]=e[l]}return n.default=e,r&&r.set(e,n),n}(require("../popover"));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}const a=(0,e.template)("<span>"),i=(0,e.template)("<n-color-palette>",!0,!1);function c(n){let[u,c]=(0,t.splitProps)(n,["css","value","defaultValue","onChange","popupClass","popupCss","size"]),[p,s]=(0,t.createSignal)(u.defaultValue);function d(e){void 0===u.value&&s(e.detail),u.onChange?.(e.detail)}(0,t.onMount)(()=>{void 0===u.value&&u.defaultValue&&s(u.defaultValue)}),(0,t.createEffect)(()=>{void 0!==u.value&&u.value!==(0,t.untrack)(p)&&s(u.value)});let f=(0,t.createMemo)(()=>`.color-picker {padding: 10px;inline-size: 216px;}${u.popupCss||""}`),g=(0,t.createMemo)(()=>`${o.style+(u.css||"")}.trigger {--c: ${p()};}`);return(0,e.createComponent)(l.default,(0,e.mergeProps)(c,{arrow:!0,trigger:"click",get content(){return(()=>{let t=i();return(0,e.addEventListener)(t,"change",d),t._$owner=(0,e.getOwner)(),(0,e.effect)(()=>t.value=p()),t})()},get popupClass(){return(0,r.cx)("color-picker",u.popupClass)},get popupCss(){return f()},get css(){return g()},get children(){let t=a();return(0,e.effect)(()=>(0,e.className)(t,(0,r.cx)("trigger",u.size))),t}}))}(0,n.customElement)("n-color-picker",{...l.defaultProps,value:void 0,defaultValue:void 0,onChange:void 0,size:void 0},(r,n)=>{let o=n.element,l=(0,t.mergeProps)({onChange(e){o.dispatchEvent(new CustomEvent("change",{detail:e}))},children:o.children},r);return(0,e.createComponent)(c,l)});const p=c;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/color-picker/index.tsx"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"sources":["../../components/color-picker/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onMount,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport '../color-palette';\nimport Popover, { defaultProps } from '../popover';\nimport type { BasicConfig, ColorPaletteProps, CustomElement, PopoverProps } from '..';\n\n/** 颜色选择器\n * @since 2.0.0\n */\nexport interface ColorPickerProps\n extends ColorPaletteProps,\n Omit<PopoverProps, 'children' | 'content'> {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 关闭后是否销毁 */\n destroyInactive?: boolean;\n /** 尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 默认值 */\n defaultValue?: string;\n}\nexport type ColorPickerElement = CustomElement<ColorPickerProps>;\n\nfunction ColorPicker(props: ColorPickerProps) {\n const [local, others] = splitProps(props, [\n 'css',\n 'value',\n 'defaultValue',\n 'onChange',\n 'popupClass',\n 'popupCss',\n 'size',\n ]);\n const [color, setColor] = createSignal<string | undefined>(local.defaultValue);\n\n function handleChange(e: CustomEvent<string>) {\n if (local.value === void 0) {\n setColor(e.detail);\n }\n local.onChange?.(e.detail);\n }\n\n onMount(() => {\n if (local.value === void 0 && local.defaultValue) {\n setColor(local.defaultValue);\n }\n });\n createEffect(() => {\n if (local.value !== void 0 && local.value !== untrack(color)) {\n setColor(local.value);\n }\n });\n const popupCss = createMemo(\n () => `.color-picker {padding: 10px;inline-size: 216px;}${local.popupCss || ''}`,\n );\n const css = createMemo(() => `${style + (local.css || '')}.trigger {--c: ${color()};}`);\n\n return (\n <Popover\n {...others}\n arrow={true}\n trigger=\"click\"\n content={<n-color-palette value={color()} onChange={handleChange} />}\n popupClass={cx('color-picker', local.popupClass)}\n popupCss={popupCss()}\n css={css()}\n >\n <span class={cx('trigger', local.size)} />\n </Popover>\n );\n}\n\ncustomElement<ColorPickerProps>(\n 'n-color-picker',\n {\n ...defaultProps,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n size: void 0,\n },\n (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n children: el.children,\n },\n _,\n );\n\n return <ColorPicker {...props} />;\n },\n);\n\nexport default ColorPicker;\n"],"names":["ColorPicker","props","local","others","splitProps","color","setColor","createSignal","defaultValue","handleChange","e","value","detail","onChange","onMount","createEffect","untrack","popupCss","createMemo","css","style","Popover","cx","popupClass","size","customElement","defaultProps","_","opts","el","element","mergeProps","val","dispatchEvent","CustomEvent","children"],"rangeMappings":"","mappings":"kGAmHA,+CAAA,+CA3GO,sBACY,yBACW,2BACR,mBACf,gfAC+B,2NAwBtC,SAASA,EAAYC,CAAuB,EAC1C,GAAM,CAACC,EAAOC,EAAO,CAAGC,GAAAA,YAAU,EAACH,EAAO,CACxC,MACA,QACA,eACA,WACA,aACA,WACA,OACD,EACK,CAACI,EAAOC,EAAS,CAAGC,GAAAA,cAAY,EAAqBL,EAAMM,YAAY,EAE7E,SAASC,EAAaC,CAAsB,EACtB,KAAK,IAArBR,EAAMS,KAAK,EACbL,EAASI,EAAEE,MAAM,EAEnBV,EAAMW,QAAQ,GAAGH,EAAEE,MAAM,CAC3B,CAEAE,GAAAA,SAAO,EAAC,KACc,KAAK,IAArBZ,EAAMS,KAAK,EAAeT,EAAMM,YAAY,EAC9CF,EAASJ,EAAMM,YAAY,CAE/B,GACAO,GAAAA,cAAY,EAAC,KACS,KAAK,IAArBb,EAAMS,KAAK,EAAeT,EAAMS,KAAK,GAAKK,GAAAA,SAAO,EAACX,IACpDC,EAASJ,EAAMS,KAAK,CAExB,GACA,IAAMM,EAAWC,GAAAA,YAAU,EACzB,IAAM,CAAC,iDAAiD,EAAEhB,EAAMe,QAAQ,EAAI,GAAG,CAAC,EAE5EE,EAAMD,GAAAA,YAAU,EAAC,IAAM,CAAC,EAAEE,OAAK,CAAIlB,CAAAA,EAAMiB,GAAG,EAAI,EAAC,EAAG,eAAe,EAAEd,IAAQ,EAAE,CAAC,EAEtF,4BACGgB,SAAO,kBACFlB,SACG,CAAA,8FAE6CM,uDAAnBJ,mCACrBiB,GAAAA,IAAE,EAAC,eAAgBpB,EAAMqB,UAAU,yBACrCN,sBACLE,uEAEQG,GAAAA,IAAE,EAAC,UAAWpB,EAAMsB,IAAI,SAG3C,CAEAC,GAAAA,eAAa,EACX,iBACA,CACE,GAAGC,cAAY,CACff,MAAO,KAAK,EACZH,aAAc,KAAK,EACnBK,SAAU,KAAK,EACfW,KAAM,KAAK,CACb,EACA,CAACG,EAAGC,KACF,IAAMC,EAAKD,EAAKE,OAAO,CACjB7B,EAAQ8B,GAAAA,YAAU,EACtB,CACElB,SAASmB,CAAY,EACnBH,EAAGI,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBtB,OAAQoB,CACV,GAEJ,EACAG,SAAUN,EAAGM,QAAQ,AACvB,EACAR,GAGF,4BAAQ3B,EAAgBC,EAC1B,SAGF,EAAeD"}
|
package/lib/cron/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 b}});const e=require("solid-js/web"),t=require("solid-js"),n=require("@moneko/css"),r=require("solid-element"),a=d(require("./day")),u=d(require("./hour")),l=d(require("./minute")),o=d(require("./month")),s=d(require("./second")),i=d(require("./week")),c=d(require("./year"));function d(e){return e&&e.__esModule?e:{default:e}}require("../button"),require("../input-number"),require("../radio"),require("../select"),require("../tabs");const y=(0,e.template)("<style>"),p=(0,e.template)("<n-tabs>",!0,!1),m=(0,e.template)("<code>");function v(r){let[d]=(0,t.splitProps)(r,["value","defaultValue","exclude","onChange","type","showCron","css","class"]),[v,b]=(0,t.createSignal)(d.defaultValue),g=new Date().getFullYear(),f={hms:{start:0,end:1,begin:0,beginEvery:1,some:[0],value:""},mwd:{start:1,end:2,begin:1,beginEvery:1,some:[1],value:""},year:{start:g,end:g+1,begin:g,beginEvery:1,some:[g],value:""}},h=[],C=[];for(let e=1;e<32;e++)h.push({label:e<10?`0${e}`:`${e}`,value:e}),C.push(e);let[w,$]=(0,t.createSignal)("second"),[k,q]=(0,t.createSignal)({second:{type:"*",...f.hms},minute:{type:"*",...f.hms},hour:{type:"*",...f.hms},day:{type:"*",last:1,closeWorkDay:1,...f.mwd},month:{type:"*",...f.mwd},week:{last:1,type:"?",...f.mwd},year:{type:"",...f.year}});function E(e,n){(0,t.batch)(()=>{!function(){let e=(0,t.untrack)(k),n="day"===w();if(n||"week"===w()){let t=n?"week":"day",r="?"===e[t].type&&"?"===e[w()].type?"*":"?";r!==e[t].type&&q(e=>({...e,[t]:{...e[t],type:r}}))}}(),q(t=>{let r={...t[w()],[e]:n};return("start"===e||"end"===e)&&r.end-r.start<=1&&("end"===e?r.start=n-1:r.end=n+1),{...t,[w()]:r}})})}function N(e){$(e.detail[0])}function P(e,t){if(e.value.includes("-")){e.type="period";let t=e.value.split("-");e.start=Number(t[0]),e.end=Number(t[1])}else if(e.value.includes("W"))e.type="closeWorkDay",e.closeWorkDay=Number(e.value.split("W")[0])||1;else if(e.value.includes("L"))e.type="last",e.last=Number(e.value.split("L")[0])||1;else if(e.value.includes(t?"#":"/")){e.type="beginInterval";let n=e.value.split(t?"#":"/");t?(e.begin=Number(n[1]),e.beginEvery=Number(n[0])):(e.begin=Number(n[0]),e.beginEvery=Number(n[1]))}else e.value.includes(",")||/^[0-9]+$/.test(e.value)?(e.type="some",e.some=e.value.split(",").map(Number)):e.type=e.value;return e}function W(e){return"number"!=typeof e||isNaN(e)?e:`${e}`}function D(e,t){switch(e.type){case"period":return`${W(e.start)}-${W(e.end)}`;case"beginInterval":if(t)return`${W(e.beginEvery)}#${W(e.begin)}`;return`${W(e.begin)}/${W(e.beginEvery)}`;case"closeWorkDay":return`${W(e.closeWorkDay||1)}W`;case"last":return t?`${W(e.last)}L`:"L";case"some":return e.some.join(",");default:return e.type}}(0,t.createEffect)(()=>{void 0!==d.value&&(0,t.untrack)(v)!==d.value&&b(d.value)}),(0,t.createEffect)(()=>{let e=v();if(e){let n=e.toUpperCase().split(" ");(0,t.batch)(()=>{q(e=>({second:P({...e.second,value:n[0]||"?"}),minute:P({...e.minute,value:n[1]||"?"}),hour:P({...e.hour,value:n[2]||"?"}),day:P({...e.day,value:n[3]||""}),month:P({...e.month,value:n[4]||""}),week:P({...e.week,value:n[5]||""},!0),year:P({...e.year,value:n[6]||""})}))})}}),(0,t.createEffect)(()=>{let{second:e,minute:t,hour:n,day:a,month:u,week:l,year:o}=k(),s=`${D(e)} ${D(t)} ${D(n)} ${D(a)} ${D(u)} ${D(l,!0)} ${D(o)}`;b(e=>e===s?e:(r.onChange?.(s),s))});let j=[{value:"second",label:"秒",content:(0,e.createComponent)(s.default,{get state(){return k().second},onChange:E})},{value:"minute",label:"分钟",content:(0,e.createComponent)(l.default,{get state(){return k().minute},onChange:E})},{value:"hour",label:"小时",content:(0,e.createComponent)(u.default,{get state(){return k().hour},onChange:E})},{value:"day",label:"日",content:(0,e.createComponent)(a.default,{get state(){return k().day},onChange:E})},{value:"week",label:"周",content:(0,e.createComponent)(i.default,{get state(){return k().week},onChange:E})},{value:"month",label:"月",content:(0,e.createComponent)(o.default,{get state(){return k().month},onChange:E})},{value:"year",label:"年",content:(0,e.createComponent)(c.default,{get state(){return k().year},onChange:E})}];return[(()=>{let t=y();return(0,e.insert)(t,()=>(0,n.css)(d.css)),t})(),(()=>{let t=p();return(0,e.addEventListener)(t,"change",N),t.items=j,t._$owner=(0,e.getOwner)(),(0,e.effect)(()=>t.type=d.type),(0,e.effect)(()=>t.value=w()),t})(),(0,e.createComponent)(t.Show,{get when(){return d.showCron},get children(){let t=m();return t.style.setProperty("width","100%"),t.style.setProperty("display","block"),t.style.setProperty("background","var(--component-bg)"),t.style.setProperty("border-radius","var(--border-radius)"),t.style.setProperty("text-align","center"),(0,e.insert)(t,v),t}})]}(0,r.customElement)("n-cron",{value:void 0,defaultValue:"0 0 0 * * ? *",onChange:void 0,type:"line",exclude:[],showCron:!0},(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return b}});const e=require("solid-js/web"),t=require("solid-js"),n=require("@moneko/css"),r=require("solid-element"),a=d(require("./day")),u=d(require("./hour")),l=d(require("./minute")),o=d(require("./month")),s=d(require("./second")),i=d(require("./week")),c=d(require("./year"));function d(e){return e&&e.__esModule?e:{default:e}}require("../button"),require("../input-number"),require("../radio"),require("../select"),require("../tabs");const y=(0,e.template)("<style>"),p=(0,e.template)("<n-tabs>",!0,!1),m=(0,e.template)("<code>");function v(r){let[d]=(0,t.splitProps)(r,["value","defaultValue","exclude","onChange","type","showCron","css","class"]),[v,b]=(0,t.createSignal)(d.defaultValue),g=new Date().getFullYear(),f={hms:{start:0,end:1,begin:0,beginEvery:1,some:[0],value:""},mwd:{start:1,end:2,begin:1,beginEvery:1,some:[1],value:""},year:{start:g,end:g+1,begin:g,beginEvery:1,some:[g],value:""}},h=[],C=[];for(let e=1;e<32;e++)h.push({label:e<10?`0${e}`:`${e}`,value:e}),C.push(e);let[w,$]=(0,t.createSignal)("second"),[k,q]=(0,t.createSignal)({second:{type:"*",...f.hms},minute:{type:"*",...f.hms},hour:{type:"*",...f.hms},day:{type:"*",last:1,closeWorkDay:1,...f.mwd},month:{type:"*",...f.mwd},week:{last:1,type:"?",...f.mwd},year:{type:"",...f.year}});function E(e,n){(0,t.batch)(()=>{!function(){let e=(0,t.untrack)(k),n="day"===w();if(n||"week"===w()){let t=n?"week":"day",r="?"===e[t].type&&"?"===e[w()].type?"*":"?";r!==e[t].type&&q(e=>({...e,[t]:{...e[t],type:r}}))}}(),q(t=>{let r={...t[w()],[e]:n};return("start"===e||"end"===e)&&r.end-r.start<=1&&("end"===e?r.start=n-1:r.end=n+1),{...t,[w()]:r}})})}function N(e){$(e.detail[0])}function P(e,t){if(e.value.includes("-")){e.type="period";let t=e.value.split("-");e.start=Number(t[0]),e.end=Number(t[1])}else if(e.value.includes("W"))e.type="closeWorkDay",e.closeWorkDay=Number(e.value.split("W")[0])||1;else if(e.value.includes("L"))e.type="last",e.last=Number(e.value.split("L")[0])||1;else if(e.value.includes(t?"#":"/")){e.type="beginInterval";let n=e.value.split(t?"#":"/");t?(e.begin=Number(n[1]),e.beginEvery=Number(n[0])):(e.begin=Number(n[0]),e.beginEvery=Number(n[1]))}else e.value.includes(",")||/^[0-9]+$/.test(e.value)?(e.type="some",e.some=e.value.split(",").map(Number)):e.type=e.value;return e}function W(e){return"number"!=typeof e||isNaN(e)?e:`${e}`}function D(e,t){switch(e.type){case"period":return`${W(e.start)}-${W(e.end)}`;case"beginInterval":if(t)return`${W(e.beginEvery)}#${W(e.begin)}`;return`${W(e.begin)}/${W(e.beginEvery)}`;case"closeWorkDay":return`${W(e.closeWorkDay||1)}W`;case"last":return t?`${W(e.last)}L`:"L";case"some":return e.some.join(",");default:return e.type}}(0,t.createEffect)(()=>{void 0!==d.value&&(0,t.untrack)(v)!==d.value&&b(d.value)}),(0,t.createEffect)(()=>{let e=v();if(e){let n=e.toUpperCase().split(" ");(0,t.batch)(()=>{q(e=>({second:P({...e.second,value:n[0]||"?"}),minute:P({...e.minute,value:n[1]||"?"}),hour:P({...e.hour,value:n[2]||"?"}),day:P({...e.day,value:n[3]||""}),month:P({...e.month,value:n[4]||""}),week:P({...e.week,value:n[5]||""},!0),year:P({...e.year,value:n[6]||""})}))})}}),(0,t.createEffect)(()=>{let{second:e,minute:t,hour:n,day:a,month:u,week:l,year:o}=k(),s=`${D(e)} ${D(t)} ${D(n)} ${D(a)} ${D(u)} ${D(l,!0)} ${D(o)}`;b(e=>e===s?e:(r.onChange?.(s),s))});let j=[{value:"second",label:"秒",content:(0,e.createComponent)(s.default,{get state(){return k().second},onChange:E})},{value:"minute",label:"分钟",content:(0,e.createComponent)(l.default,{get state(){return k().minute},onChange:E})},{value:"hour",label:"小时",content:(0,e.createComponent)(u.default,{get state(){return k().hour},onChange:E})},{value:"day",label:"日",content:(0,e.createComponent)(a.default,{get state(){return k().day},onChange:E})},{value:"week",label:"周",content:(0,e.createComponent)(i.default,{get state(){return k().week},onChange:E})},{value:"month",label:"月",content:(0,e.createComponent)(o.default,{get state(){return k().month},onChange:E})},{value:"year",label:"年",content:(0,e.createComponent)(c.default,{get state(){return k().year},onChange:E})}];return[(()=>{let t=y();return(0,e.insert)(t,()=>(0,n.css)(d.css)),t})(),(()=>{let t=p();return(0,e.addEventListener)(t,"change",N),t.items=j,t._$owner=(0,e.getOwner)(),(0,e.effect)(()=>t.type=d.type),(0,e.effect)(()=>t.value=w()),t})(),(0,e.createComponent)(t.Show,{get when(){return d.showCron},get children(){let t=m();return t.style.setProperty("width","100%"),t.style.setProperty("display","block"),t.style.setProperty("background","var(--component-bg)"),t.style.setProperty("border-radius","var(--border-radius)"),t.style.setProperty("text-align","center"),(0,e.insert)(t,v),t}})]}(0,r.customElement)("n-cron",{value:void 0,defaultValue:"0 0 0 * * ? *",onChange:void 0,type:"line",exclude:[],showCron:!0},(n,r)=>{let a=r.element,u=(0,t.mergeProps)({onChange(e){a.dispatchEvent(new CustomEvent("change",{detail:e}))}},n);return(0,e.createComponent)(v,u)});const b=v;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/cron/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/cron/index.tsx"],"sourcesContent":["import {\n Show,\n batch,\n createComponent,\n createEffect,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { css } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport Day from './day';\nimport Hour from './hour';\nimport Minute from './minute';\nimport Month from './month';\nimport Second from './second';\nimport Week from './week';\nimport Year from './year';\nimport '../button';\nimport '../input-number';\nimport '../radio';\nimport '../select';\nimport '../tabs';\nimport type { BaseOption, CustomElement, TabOption } from '..';\n\nexport interface CronProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 隐藏域 */\n exclude?: string[];\n /** 显示表达式\n * @default true\n */\n showCron?: boolean;\n /** 标签页类型\n * @default 'line'\n */\n type?: 'line' | 'card';\n /** 值 */\n value?: string;\n /** 默认值\n * @default 0 0 0 * * ? *\n */\n defaultValue?: string;\n /** 值改变触发a */\n onChange?(val?: string): void;\n}\n\nexport type CronElement = CustomElement<CronProps>;\nexport type SecondType = '*' | 'period' | 'beginInterval' | 'some';\nexport type MinuteType = SecondType;\nexport type HourType = SecondType;\nexport type DayType = SecondType | 'closeWorkDay' | '?' | 'last';\nexport type WeekType = SecondType | 'last' | '?';\nexport type MonthType = SecondType;\nexport type YearType = SecondType | '';\nexport type CronData<T extends string = string> = {\n start: number;\n end: number;\n begin: number;\n beginEvery: number;\n type: T;\n some: number[];\n value: string;\n};\n\nexport type ActiveTab = keyof CronType;\nexport type CronType = {\n second: CronData<SecondType>;\n minute: CronData<MinuteType>;\n hour: CronData<HourType>;\n day: CronData<DayType> & { last: number; closeWorkDay: number };\n week: CronData<WeekType> & { last: number };\n month: CronData<MonthType>;\n year: CronData<YearType>;\n};\n\nfunction Cron(props: CronProps) {\n const [local] = splitProps(props, [\n 'value',\n 'defaultValue',\n 'exclude',\n 'onChange',\n 'type',\n 'showCron',\n 'css',\n 'class',\n ]);\n const [value, setValue] = createSignal(local.defaultValue);\n const date = new Date();\n const fullYear = date.getFullYear();\n const defaultState = {\n hms: {\n start: 0,\n end: 1,\n begin: 0,\n beginEvery: 1,\n some: [0],\n value: '',\n },\n mwd: {\n start: 1,\n end: 2,\n begin: 1,\n beginEvery: 1,\n some: [1],\n value: '',\n },\n year: {\n start: fullYear,\n end: fullYear + 1,\n begin: fullYear,\n beginEvery: 1,\n some: [fullYear],\n value: '',\n },\n };\n const days: BaseOption[] = [];\n const daysBeginEvery: number[] = [];\n\n for (let x = 1; x < 32; x++) {\n days.push({\n label: x < 10 ? `0${x}` : `${x}`,\n value: x,\n });\n daysBeginEvery.push(x);\n }\n const [active, setActive] = createSignal<ActiveTab>('second');\n const [state, setState] = createSignal<CronType>({\n second: { type: '*', ...defaultState.hms },\n minute: { type: '*', ...defaultState.hms },\n hour: { type: '*', ...defaultState.hms },\n day: {\n type: '*',\n last: 1,\n closeWorkDay: 1,\n ...defaultState.mwd,\n },\n month: {\n type: '*',\n ...defaultState.mwd,\n },\n week: {\n last: 1,\n type: '?',\n ...defaultState.mwd,\n },\n year: {\n type: '',\n ...defaultState.year,\n },\n });\n\n function prefixWeekDay() {\n const store = untrack(state);\n const isDay = active() === 'day';\n\n if (isDay || active() === 'week') {\n const key = isDay ? 'week' : 'day';\n const next = store[key].type === '?' && store[active()].type === '?' ? '*' : '?';\n\n if (next !== store[key].type) {\n setState((prev) => {\n return {\n ...prev,\n [key]: {\n ...prev[key],\n type: next,\n },\n };\n });\n }\n }\n }\n\n function onChange<T extends CronType[ActiveTab]>(type: keyof T, val: T[keyof T]) {\n batch(() => {\n prefixWeekDay();\n setState((prev) => {\n const next = {\n ...prev[active()],\n [type]: val,\n };\n\n if (type === 'start' || type === 'end') {\n if (next.end - next.start <= 1) {\n if (type === 'end') {\n next.start = (val as number) - 1;\n } else {\n next.end = (val as number) + 1;\n }\n }\n }\n\n return {\n ...prev,\n [active()]: next,\n };\n });\n });\n }\n function changeActiveKey(e: CustomEvent<[string, TabOption, Event]>) {\n setActive(e.detail[0] as ActiveTab);\n }\n function parseVal<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n if (item.value.includes('-')) {\n item.type = 'period';\n const period = item.value.split('-');\n\n item.start = Number(period[0]);\n item.end = Number(period[1]);\n } else if (item.value.includes('W')) {\n item.type = 'closeWorkDay';\n (item as CronType['day']).closeWorkDay = Number(item.value.split('W')[0]) || 1;\n } else if (item.value.includes('L')) {\n item.type = 'last';\n (item as CronType['day']).last = Number(item.value.split('L')[0]) || 1;\n } else if (item.value.includes(isWeek ? '#' : '/')) {\n item.type = 'beginInterval';\n const beginInterval = item.value.split(isWeek ? '#' : '/');\n\n if (isWeek) {\n item.begin = Number(beginInterval[1]);\n item.beginEvery = Number(beginInterval[0]);\n } else {\n item.begin = Number(beginInterval[0]);\n item.beginEvery = Number(beginInterval[1]);\n }\n } else if (item.value.includes(',') || /^[0-9]+$/.test(item.value)) {\n item.type = 'some';\n item.some = item.value.split(',').map(Number);\n } else {\n item.type = item.value as CronType[T]['type'];\n }\n return item;\n }\n\n function nts(num?: string | number) {\n if (typeof num === 'number' && !isNaN(num)) {\n return `${num}`;\n }\n return num;\n }\n\n function fmt<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n switch (item.type) {\n case 'period':\n return `${nts(item.start)}-${nts(item.end)}`;\n case 'beginInterval':\n if (isWeek) return `${nts(item.beginEvery)}#${nts(item.begin)}`;\n return `${nts(item.begin)}/${nts(item.beginEvery)}`;\n case 'closeWorkDay':\n return `${nts(item.closeWorkDay || 1)}W`;\n case 'last':\n return isWeek ? `${nts(item.last)}L` : 'L';\n case 'some':\n return item.some.join(',');\n default:\n return item.type;\n }\n }\n\n createEffect(() => {\n if (local.value !== void 0 && untrack(value) !== local.value) {\n setValue(local.value);\n }\n });\n\n createEffect(() => {\n const val = value();\n\n if (val) {\n const valuesArray = val.toUpperCase().split(' ');\n\n batch(() => {\n setState((prev) => {\n return {\n second: parseVal<'second'>({ ...prev.second, value: valuesArray[0] || '?' }),\n minute: parseVal<'minute'>({ ...prev.minute, value: valuesArray[1] || '?' }),\n hour: parseVal<'hour'>({ ...prev.hour, value: valuesArray[2] || '?' }),\n day: parseVal<'day'>({ ...prev.day, value: valuesArray[3] || '' }),\n month: parseVal<'month'>({ ...prev.month, value: valuesArray[4] || '' }),\n week: parseVal<'week'>({ ...prev.week, value: valuesArray[5] || '' }, true),\n year: parseVal<'year'>({ ...prev.year, value: valuesArray[6] || '' }),\n };\n });\n });\n }\n });\n createEffect(() => {\n const { second, minute, hour, day, month, week, year } = state();\n const next = `${fmt(second)} ${fmt(minute)} ${fmt(hour)} ${fmt(day)} ${fmt(month)} ${fmt(\n week,\n true,\n )} ${fmt(year)}`;\n\n setValue((prev) => {\n if (prev === next) return prev;\n props.onChange?.(next);\n return next;\n });\n });\n\n const items = [\n {\n value: 'second',\n label: '秒',\n content: <Second state={state().second} onChange={onChange} />,\n },\n {\n value: 'minute',\n label: '分钟',\n content: <Minute state={state().minute} onChange={onChange} />,\n },\n {\n value: 'hour',\n label: '小时',\n content: <Hour state={state().hour} onChange={onChange} />,\n },\n {\n value: 'day',\n label: '日',\n content: <Day state={state().day} onChange={onChange} />,\n },\n {\n value: 'week',\n label: '周',\n content: <Week state={state().week} onChange={onChange} />,\n },\n {\n value: 'month',\n label: '月',\n content: <Month state={state().month} onChange={onChange} />,\n },\n {\n value: 'year',\n label: '年',\n content: <Year state={state().year} onChange={onChange} />,\n },\n ];\n\n return (\n <>\n <style>{css(local.css)}</style>\n <n-tabs type={local.type} items={items} value={active()} onChange={changeActiveKey} />\n <Show when={local.showCron}>\n <code\n style={{\n width: '100%',\n display: 'block',\n background: 'var(--component-bg)',\n 'border-radius': 'var(--border-radius)',\n 'text-align': 'center',\n }}\n >\n {value()}\n </code>\n </Show>\n </>\n );\n}\n\ncustomElement<CronProps>(\n 'n-cron',\n {\n value: void 0,\n defaultValue: '0 0 0 * * ? *',\n onChange: void 0,\n type: 'line',\n exclude: [],\n showCron: true,\n } as CronProps,\n (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(Cron, props);\n },\n);\nexport default Cron;\n"],"names":["Cron","props","local","splitProps","value","setValue","createSignal","defaultValue","fullYear","date","Date","getFullYear","defaultState","hms","start","end","begin","beginEvery","some","mwd","year","days","daysBeginEvery","x","push","label","active","setActive","state","setState","second","type","minute","hour","day","last","closeWorkDay","month","week","onChange","val","batch","prefixWeekDay","store","untrack","isDay","key","next","prev","changeActiveKey","e","detail","parseVal","item","isWeek","includes","period","split","Number","beginInterval","test","map","nts","num","isNaN","fmt","join","createEffect","valuesArray","toUpperCase","items","content","Second","Minute","Hour","Day","Week","Month","Year","css","Show","showCron","customElement","exclude","_","opts","el","element","mergeProps","dispatchEvent","CustomEvent","createComponent"],"rangeMappings":"","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../components/cron/index.tsx"],"sourcesContent":["import { Show, batch, createEffect, createSignal, mergeProps, splitProps, untrack } from 'solid-js';\nimport { css } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport Day from './day';\nimport Hour from './hour';\nimport Minute from './minute';\nimport Month from './month';\nimport Second from './second';\nimport Week from './week';\nimport Year from './year';\nimport '../button';\nimport '../input-number';\nimport '../radio';\nimport '../select';\nimport '../tabs';\nimport type { BaseOption, CustomElement, TabOption } from '..';\n\nexport interface CronProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 隐藏域 */\n exclude?: string[];\n /** 显示表达式\n * @default true\n */\n showCron?: boolean;\n /** 标签页类型\n * @default 'line'\n */\n type?: 'line' | 'card';\n /** 值 */\n value?: string;\n /** 默认值\n * @default 0 0 0 * * ? *\n */\n defaultValue?: string;\n /** 值改变触发a */\n onChange?(val?: string): void;\n}\n\nexport type CronElement = CustomElement<CronProps>;\nexport type SecondType = '*' | 'period' | 'beginInterval' | 'some';\nexport type MinuteType = SecondType;\nexport type HourType = SecondType;\nexport type DayType = SecondType | 'closeWorkDay' | '?' | 'last';\nexport type WeekType = SecondType | 'last' | '?';\nexport type MonthType = SecondType;\nexport type YearType = SecondType | '';\nexport type CronData<T extends string = string> = {\n start: number;\n end: number;\n begin: number;\n beginEvery: number;\n type: T;\n some: number[];\n value: string;\n};\n\nexport type ActiveTab = keyof CronType;\nexport type CronType = {\n second: CronData<SecondType>;\n minute: CronData<MinuteType>;\n hour: CronData<HourType>;\n day: CronData<DayType> & { last: number; closeWorkDay: number };\n week: CronData<WeekType> & { last: number };\n month: CronData<MonthType>;\n year: CronData<YearType>;\n};\n\nfunction Cron(props: CronProps) {\n const [local] = splitProps(props, [\n 'value',\n 'defaultValue',\n 'exclude',\n 'onChange',\n 'type',\n 'showCron',\n 'css',\n 'class',\n ]);\n const [value, setValue] = createSignal(local.defaultValue);\n const date = new Date();\n const fullYear = date.getFullYear();\n const defaultState = {\n hms: {\n start: 0,\n end: 1,\n begin: 0,\n beginEvery: 1,\n some: [0],\n value: '',\n },\n mwd: {\n start: 1,\n end: 2,\n begin: 1,\n beginEvery: 1,\n some: [1],\n value: '',\n },\n year: {\n start: fullYear,\n end: fullYear + 1,\n begin: fullYear,\n beginEvery: 1,\n some: [fullYear],\n value: '',\n },\n };\n const days: BaseOption[] = [];\n const daysBeginEvery: number[] = [];\n\n for (let x = 1; x < 32; x++) {\n days.push({\n label: x < 10 ? `0${x}` : `${x}`,\n value: x,\n });\n daysBeginEvery.push(x);\n }\n const [active, setActive] = createSignal<ActiveTab>('second');\n const [state, setState] = createSignal<CronType>({\n second: { type: '*', ...defaultState.hms },\n minute: { type: '*', ...defaultState.hms },\n hour: { type: '*', ...defaultState.hms },\n day: {\n type: '*',\n last: 1,\n closeWorkDay: 1,\n ...defaultState.mwd,\n },\n month: {\n type: '*',\n ...defaultState.mwd,\n },\n week: {\n last: 1,\n type: '?',\n ...defaultState.mwd,\n },\n year: {\n type: '',\n ...defaultState.year,\n },\n });\n\n function prefixWeekDay() {\n const store = untrack(state);\n const isDay = active() === 'day';\n\n if (isDay || active() === 'week') {\n const key = isDay ? 'week' : 'day';\n const next = store[key].type === '?' && store[active()].type === '?' ? '*' : '?';\n\n if (next !== store[key].type) {\n setState((prev) => {\n return {\n ...prev,\n [key]: {\n ...prev[key],\n type: next,\n },\n };\n });\n }\n }\n }\n\n function onChange<T extends CronType[ActiveTab]>(type: keyof T, val: T[keyof T]) {\n batch(() => {\n prefixWeekDay();\n setState((prev) => {\n const next = {\n ...prev[active()],\n [type]: val,\n };\n\n if (type === 'start' || type === 'end') {\n if (next.end - next.start <= 1) {\n if (type === 'end') {\n next.start = (val as number) - 1;\n } else {\n next.end = (val as number) + 1;\n }\n }\n }\n\n return {\n ...prev,\n [active()]: next,\n };\n });\n });\n }\n function changeActiveKey(e: CustomEvent<[string, TabOption, Event]>) {\n setActive(e.detail[0] as ActiveTab);\n }\n function parseVal<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n if (item.value.includes('-')) {\n item.type = 'period';\n const period = item.value.split('-');\n\n item.start = Number(period[0]);\n item.end = Number(period[1]);\n } else if (item.value.includes('W')) {\n item.type = 'closeWorkDay';\n (item as CronType['day']).closeWorkDay = Number(item.value.split('W')[0]) || 1;\n } else if (item.value.includes('L')) {\n item.type = 'last';\n (item as CronType['day']).last = Number(item.value.split('L')[0]) || 1;\n } else if (item.value.includes(isWeek ? '#' : '/')) {\n item.type = 'beginInterval';\n const beginInterval = item.value.split(isWeek ? '#' : '/');\n\n if (isWeek) {\n item.begin = Number(beginInterval[1]);\n item.beginEvery = Number(beginInterval[0]);\n } else {\n item.begin = Number(beginInterval[0]);\n item.beginEvery = Number(beginInterval[1]);\n }\n } else if (item.value.includes(',') || /^[0-9]+$/.test(item.value)) {\n item.type = 'some';\n item.some = item.value.split(',').map(Number);\n } else {\n item.type = item.value as CronType[T]['type'];\n }\n return item;\n }\n\n function nts(num?: string | number) {\n if (typeof num === 'number' && !isNaN(num)) {\n return `${num}`;\n }\n return num;\n }\n\n function fmt<T extends ActiveTab>(item: CronType[T], isWeek?: boolean) {\n switch (item.type) {\n case 'period':\n return `${nts(item.start)}-${nts(item.end)}`;\n case 'beginInterval':\n if (isWeek) return `${nts(item.beginEvery)}#${nts(item.begin)}`;\n return `${nts(item.begin)}/${nts(item.beginEvery)}`;\n case 'closeWorkDay':\n return `${nts(item.closeWorkDay || 1)}W`;\n case 'last':\n return isWeek ? `${nts(item.last)}L` : 'L';\n case 'some':\n return item.some.join(',');\n default:\n return item.type;\n }\n }\n\n createEffect(() => {\n if (local.value !== void 0 && untrack(value) !== local.value) {\n setValue(local.value);\n }\n });\n\n createEffect(() => {\n const val = value();\n\n if (val) {\n const valuesArray = val.toUpperCase().split(' ');\n\n batch(() => {\n setState((prev) => {\n return {\n second: parseVal<'second'>({ ...prev.second, value: valuesArray[0] || '?' }),\n minute: parseVal<'minute'>({ ...prev.minute, value: valuesArray[1] || '?' }),\n hour: parseVal<'hour'>({ ...prev.hour, value: valuesArray[2] || '?' }),\n day: parseVal<'day'>({ ...prev.day, value: valuesArray[3] || '' }),\n month: parseVal<'month'>({ ...prev.month, value: valuesArray[4] || '' }),\n week: parseVal<'week'>({ ...prev.week, value: valuesArray[5] || '' }, true),\n year: parseVal<'year'>({ ...prev.year, value: valuesArray[6] || '' }),\n };\n });\n });\n }\n });\n createEffect(() => {\n const { second, minute, hour, day, month, week, year } = state();\n const next = `${fmt(second)} ${fmt(minute)} ${fmt(hour)} ${fmt(day)} ${fmt(month)} ${fmt(\n week,\n true,\n )} ${fmt(year)}`;\n\n setValue((prev) => {\n if (prev === next) return prev;\n props.onChange?.(next);\n return next;\n });\n });\n\n const items = [\n {\n value: 'second',\n label: '秒',\n content: <Second state={state().second} onChange={onChange} />,\n },\n {\n value: 'minute',\n label: '分钟',\n content: <Minute state={state().minute} onChange={onChange} />,\n },\n {\n value: 'hour',\n label: '小时',\n content: <Hour state={state().hour} onChange={onChange} />,\n },\n {\n value: 'day',\n label: '日',\n content: <Day state={state().day} onChange={onChange} />,\n },\n {\n value: 'week',\n label: '周',\n content: <Week state={state().week} onChange={onChange} />,\n },\n {\n value: 'month',\n label: '月',\n content: <Month state={state().month} onChange={onChange} />,\n },\n {\n value: 'year',\n label: '年',\n content: <Year state={state().year} onChange={onChange} />,\n },\n ];\n\n return (\n <>\n <style>{css(local.css)}</style>\n <n-tabs type={local.type} items={items} value={active()} onChange={changeActiveKey} />\n <Show when={local.showCron}>\n <code\n style={{\n width: '100%',\n display: 'block',\n background: 'var(--component-bg)',\n 'border-radius': 'var(--border-radius)',\n 'text-align': 'center',\n }}\n >\n {value()}\n </code>\n </Show>\n </>\n );\n}\n\ncustomElement<CronProps>(\n 'n-cron',\n {\n value: void 0,\n defaultValue: '0 0 0 * * ? *',\n onChange: void 0,\n type: 'line',\n exclude: [],\n showCron: true,\n } as CronProps,\n (_, opts) => {\n const el = opts.element;\n const props = mergeProps(\n {\n onChange(val?: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return <Cron {...props} />;\n },\n);\nexport default Cron;\n"],"names":["Cron","props","local","splitProps","value","setValue","createSignal","defaultValue","fullYear","date","Date","getFullYear","defaultState","hms","start","end","begin","beginEvery","some","mwd","year","days","daysBeginEvery","x","push","label","active","setActive","state","setState","second","type","minute","hour","day","last","closeWorkDay","month","week","onChange","val","batch","prefixWeekDay","store","untrack","isDay","key","next","prev","changeActiveKey","e","detail","parseVal","item","isWeek","includes","period","split","Number","beginInterval","test","map","nts","num","isNaN","fmt","join","createEffect","valuesArray","toUpperCase","items","content","Second","Minute","Hour","Day","Week","Month","Year","css","Show","showCron","customElement","exclude","_","opts","el","element","mergeProps","dispatchEvent","CustomEvent"],"rangeMappings":"","mappings":"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"}
|
package/lib/date-picker/date.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 n}});const e=require("solid-js/web"),t=require("solid-js"),r=(0,e.template)('<n-button type="primary">',!0,!1),n=function(n){let a=(0,t.createMemo)(()=>{let e=n.current.startOf("month").day();if(!e)return[];let t=[],r=n.current.subtract(1,"month").endOf("month");for(let n=e-1;n>=0;n--)t.push(r.subtract(n,"day").get("date"));return t}),c=(0,t.createMemo)(()=>Array.from({length:6-n.current.endOf("month").day()},(e,t)=>t+1)),o=(0,t.createMemo)(()=>[...a(),...Array.from({length:n.current.daysInMonth()},(e,t)=>t+1),...c()]);function u(e){return e<a().length}function l(e){return e>=o().length-c().length}return(0,e.createComponent)(t.For,{get each(){return o()},children:(a,c)=>{let o=(0,t.createMemo)(()=>{let e=c();return u(e)||l(e)?"date-day date-opacity":"date-day"}),d=(0,t.createMemo)(()=>{let e=c();return!u(e)&&!l(e)&&n.current.get("date")===a});function i(e){let t=c(),r=n.current.subtract(1,"month"),a=n.current.subtract(-1,"month"),o=(u(t)?r:l(t)?a:n.current).set("date",e);n.current.isSame(o)||n.onChange(o)}return(()=>{let t=r();return(0,e.addEventListener)(t,"click",i.bind(null,a),!0),t.circle=!0,t.flat=!0,t._$owner=(0,e.getOwner)(),(0,e.insert)(t,a),(0,e.effect)(r=>{let n=o(),a=!!d(),c=d()?"strong":"button";return n!==r._v$&&(0,e.className)(t,r._v$=n),a!==r._v$2&&t.classList.toggle("date-active",r._v$2=a),c!==r._v$3&&(t.tag=r._v$3=c),r},{_v$:void 0,_v$2:void 0,_v$3:void 0}),t})()}})};(0,e.delegateEvents)(["click"]);
|
|
2
2
|
//# sourceMappingURL=date.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/date-picker/date.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport
|
|
1
|
+
{"version":3,"sources":["../../components/date-picker/date.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport dayjs from './dayjs';\n\ntype DatePanelProps = {\n current: dayjs.Dayjs;\n onChange(next: dayjs.Dayjs): void;\n};\nfunction DatePanel(props: DatePanelProps) {\n function getDays(_dayjs: dayjs.Dayjs): number[] {\n return Array.from({ length: _dayjs.daysInMonth() }, (_, i) => i + 1);\n }\n const prevDays = createMemo(() => {\n const len = props.current.startOf('month').day();\n\n if (!len) return [];\n const _: number[] = [];\n const lastDayOfMonth = props.current.subtract(1, 'month').endOf('month');\n\n for (let i = len - 1; i >= 0; i--) {\n _.push(lastDayOfMonth.subtract(i, 'day').get('date'));\n }\n\n return _;\n });\n const nextDays = createMemo(() =>\n Array.from({ length: 6 - props.current.endOf('month').day() }, (_, i) => i + 1),\n );\n\n const allDays = createMemo(() => [...prevDays(), ...getDays(props.current), ...nextDays()]);\n\n function isPrev(idx: number) {\n return idx < prevDays().length;\n }\n function isNext(idx: number) {\n return idx >= allDays().length - nextDays().length;\n }\n return (\n <For each={allDays()}>\n {(d, i) => {\n const cls = createMemo(() => {\n const idx = i();\n\n if (isPrev(idx)) return 'date-day date-opacity';\n if (isNext(idx)) return 'date-day date-opacity';\n return 'date-day';\n });\n const isActive = createMemo(() => {\n const idx = i();\n\n return !isPrev(idx) && !isNext(idx) && props.current.get('date') === d;\n });\n\n function setDate(date: number) {\n const idx = i();\n const previousMonth = props.current.subtract(1, 'month');\n const nextMonth = props.current.subtract(-1, 'month');\n\n const next = (isPrev(idx) ? previousMonth : isNext(idx) ? nextMonth : props.current).set(\n 'date',\n date,\n );\n\n if (!props.current.isSame(next)) {\n props.onChange(next);\n }\n }\n\n return (\n <n-button\n type=\"primary\"\n circle={true}\n flat={true}\n class={cls()}\n classList={{\n 'date-active': isActive(),\n }}\n tag={isActive() ? 'strong' : 'button'}\n onClick={setDate.bind(null, d)}\n >\n {d}\n </n-button>\n );\n }}\n </For>\n );\n}\n\nexport default DatePanel;\n"],"names":["props","prevDays","createMemo","len","current","startOf","day","_","lastDayOfMonth","subtract","endOf","i","push","get","nextDays","Array","from","length","allDays","_dayjs","daysInMonth","isPrev","idx","isNext","For","d","cls","isActive","setDate","date","previousMonth","nextMonth","next","set","isSame","onChange","bind"],"rangeMappings":"","mappings":"kGAuFA,+CAAA,+CAvFgC,gEAuFhC,EAhFA,SAAmBA,CAAqB,EAItC,IAAMC,EAAWC,GAAAA,YAAU,EAAC,KAC1B,IAAMC,EAAMH,EAAMI,OAAO,CAACC,OAAO,CAAC,SAASC,GAAG,GAE9C,GAAI,CAACH,EAAK,MAAO,EAAE,CACnB,IAAMI,EAAc,EAAE,CAChBC,EAAiBR,EAAMI,OAAO,CAACK,QAAQ,CAAC,EAAG,SAASC,KAAK,CAAC,SAEhE,IAAK,IAAIC,EAAIR,EAAM,EAAGQ,GAAK,EAAGA,IAC5BJ,EAAEK,IAAI,CAACJ,EAAeC,QAAQ,CAACE,EAAG,OAAOE,GAAG,CAAC,SAG/C,OAAON,CACT,GACMO,EAAWZ,GAAAA,YAAU,EAAC,IAC1Ba,MAAMC,IAAI,CAAC,CAAEC,OAAQ,EAAIjB,EAAMI,OAAO,CAACM,KAAK,CAAC,SAASJ,GAAG,EAAG,EAAG,CAACC,EAAGI,IAAMA,EAAI,IAGzEO,EAAUhB,GAAAA,YAAU,EAAC,IAAM,IAAID,OAnB5Bc,MAAMC,IAAI,CAAC,CAAEC,OAAQE,AAmB8BnB,EAAMI,OAAO,CAnBpCgB,WAAW,EAAG,EAAG,CAACb,EAAGI,IAAMA,EAAI,MAmBWG,IAAW,EAE1F,SAASO,EAAOC,CAAW,EACzB,OAAOA,EAAMrB,IAAWgB,MAAM,AAChC,CACA,SAASM,EAAOD,CAAW,EACzB,OAAOA,GAAOJ,IAAUD,MAAM,CAAGH,IAAWG,MAAM,AACpD,CACA,4BACGO,KAAG,oBAAON,cACR,CAACO,EAAGd,KACH,IAAMe,EAAMxB,GAAAA,YAAU,EAAC,KACrB,IAAMoB,EAAMX,WAEZ,AAAIU,EAAOC,IACPC,EAAOD,GADa,wBAEjB,UACT,GACMK,EAAWzB,GAAAA,YAAU,EAAC,KAC1B,IAAMoB,EAAMX,IAEZ,MAAO,CAACU,EAAOC,IAAQ,CAACC,EAAOD,IAAQtB,EAAMI,OAAO,CAACS,GAAG,CAAC,UAAYY,CACvE,GAEA,SAASG,EAAQC,CAAY,EAC3B,IAAMP,EAAMX,IACNmB,EAAgB9B,EAAMI,OAAO,CAACK,QAAQ,CAAC,EAAG,SAC1CsB,EAAY/B,EAAMI,OAAO,CAACK,QAAQ,CAAC,GAAI,SAEvCuB,EAAO,AAACX,CAAAA,EAAOC,GAAOQ,EAAgBP,EAAOD,GAAOS,EAAY/B,EAAMI,OAAO,AAAD,EAAG6B,GAAG,CACtF,OACAJ,GAGG7B,EAAMI,OAAO,CAAC8B,MAAM,CAACF,IACxBhC,EAAMmC,QAAQ,CAACH,EAEnB,CAEA,6DAUaJ,EAAQQ,IAAI,CAAC,KAAMX,gBAPpB,CAAA,SACF,CAAA,4CAQLA,0BAPMC,QAEUC,MAEZA,IAAa,SAAW,wLAMnC,GAGN"}
|
package/lib/date-picker/dayjs.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";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return o}});const t=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(void 0);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var l=u?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(o,a,l):o[a]=e[a]}return o.default=e,r&&r.set(e,o),o}(require("dayjs"));require("dayjs/locale/zh-cn");const r=(e=require("dayjs/plugin/localeData"))&&e.__esModule?e:{default:e};function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}(0,t.extend)(r.default),(0,t.locale)("zh-cn");const o=t.default;
|
|
2
2
|
//# sourceMappingURL=dayjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/date-picker/dayjs.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport 'dayjs/locale/zh-cn';\nimport localData from 'dayjs/plugin/localeData';\n\
|
|
1
|
+
{"version":3,"sources":["../../components/date-picker/dayjs.ts"],"sourcesContent":["import dayjs, { extend, locale } from 'dayjs';\nimport 'dayjs/locale/zh-cn';\nimport localData from 'dayjs/plugin/localeData';\n\nextend(localData);\nlocale('zh-cn');\n\nexport default dayjs;\n"],"names":["extend","localData","locale","dayjs"],"rangeMappings":"","mappings":"wGAOA,+CAAA,ieAPsC,kBAC/B,yCACe,uLAEtBA,GAAAA,QAAM,EAACC,SAAS,EAChBC,GAAAA,QAAM,EAAC,eAEP,EAAeC,SAAK"}
|
package/lib/date-picker/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e,t;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return f}});const n=require("solid-js/web"),o=require("solid-js"),r=require("solid-element"),a=d(require("./dayjs")),u=d(require("./panel")),s=require("./style");require("../button"),require("../menu");const i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=l(void 0);if(n&&n.has(e))return n.get(e);var o={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var u=r?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(o,a,u):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o}(require("../popover"));function d(e){return e&&e.__esModule?e:{default:e}}function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}const c=(0,n.template)('<n-input part="value">',!0,!1);function p(e){let t;let r=(0,o.mergeProps)({type:"date",parser:"YYYY-MM-DD HH:mm:ss"},e),[d,l]=(0,o.splitProps)(r,["class","css","value","defaultValue","onChange","type","content","onOpenChange","open","format","popupCss","trigger","parser","showTime","showHour","showMinute","showSecond","prefixIcon","suffixIcon","placeholder","showToday","showHeader"]),[p,f]=(0,o.createSignal)(null),[v,h]=(0,o.createSignal)((0,a.default)(d.defaultValue)),g=(0,o.createMemo)(()=>d.format?d.format:d.showTime?"YYYY-MM-DD HH:mm:ss":({month:"YYYY-MM",date:"YYYY-MM-DD",year:"YYYY"})[d.type||"date"]);function m(e){l.disabled||(d.onOpenChange?.(e),void 0===d.open&&f(e))}function w(e){e.stopPropagation(),e.preventDefault(),m(!0)}function y(){(0,o.untrack)(p)&&m(!1)}function _(e){e.target===t?.shadowRoot?.activeElement&&m(!(0,o.untrack)(p))}function Y(e){void 0===d.value&&h(e),r.onChange?.(e.format(d.parser),e)}function M(e){if(e.detail){let t=(0,a.default)(e.detail);t.isValid()&&Y(t)}}return(0,o.createEffect)(()=>{void 0!==d.open&&d.open!==(0,o.untrack)(p)&&f(d.open)}),(0,o.createEffect)(()=>{let e=(0,a.default)(d.value||d.defaultValue);void 0!==d.value&&e.isValid()&&h(e)}),(0,n.createComponent)(i.default,(0,n.mergeProps)({trigger:"none",placement:"left",get open(){return p()},onOpenChange:m,get css(){return d.css},popupCss:s.styles,get content(){return(0,n.createComponent)(u.default,{get type(){return d.type},get current(){return v()},get open(){return p()},onChange:Y,openChange:m,get showHour(){return d.showHour},get showMinute(){return d.showMinute},get showSecond(){return d.showSecond},get showTime(){return d.showTime},get showToday(){return d.showToday},get showHeader(){return d.showHeader}})}},l,{get children(){let e=c(),o=t;return(0,n.addEventListener)(e,"change",M),(0,n.addEventListener)(e,"blur",y),(0,n.addEventListener)(e,"focus",w),(0,n.addEventListener)(e,"mousedown",_,!0),"function"==typeof o?(0,n.use)(o,e):t=e,e._$owner=(0,n.getOwner)(),(0,n.effect)(t=>{let n=l.disabled,o=d.suffixIcon,r=d.prefixIcon,a=d.placeholder;return n!==t._v$&&(e.disabled=t._v$=n),o!==t._v$2&&(e.suffixIcon=t._v$2=o),r!==t._v$3&&(e.prefixIcon=t._v$3=r),a!==t._v$4&&(e.placeholder=t._v$4=a),t},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),(0,n.effect)(()=>e.value=v().format(g())),e}}))}(t=e||(e={})).date="date",t.month="month",t.year="year",(0,r.customElement)("n-data-picker",{...i.defaultProps,value:void 0,defaultValue:void 0,disabled:void 0,onChange:void 0,open:void 0,onOpenChange:void 0,type:void 0,format:void 0,parser:void 0,showTime:void 0,suffixIcon:"📅",prefixIcon:void 0,placeholder:void 0,showHour:!0,showMinute:!0,showSecond:!0,showToday:!0,showHeader:!0},(e,t)=>{let
|
|
1
|
+
"use strict";var e,t;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return f}});const n=require("solid-js/web"),o=require("solid-js"),r=require("solid-element"),a=d(require("./dayjs")),u=d(require("./panel")),s=require("./style");require("../button"),require("../menu");const i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=l(void 0);if(n&&n.has(e))return n.get(e);var o={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var u=r?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(o,a,u):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o}(require("../popover"));function d(e){return e&&e.__esModule?e:{default:e}}function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}const c=(0,n.template)('<n-input part="value">',!0,!1);function p(e){let t;let r=(0,o.mergeProps)({type:"date",parser:"YYYY-MM-DD HH:mm:ss"},e),[d,l]=(0,o.splitProps)(r,["class","css","value","defaultValue","onChange","type","content","onOpenChange","open","format","popupCss","trigger","parser","showTime","showHour","showMinute","showSecond","prefixIcon","suffixIcon","placeholder","showToday","showHeader"]),[p,f]=(0,o.createSignal)(null),[v,h]=(0,o.createSignal)((0,a.default)(d.defaultValue)),g=(0,o.createMemo)(()=>d.format?d.format:d.showTime?"YYYY-MM-DD HH:mm:ss":({month:"YYYY-MM",date:"YYYY-MM-DD",year:"YYYY"})[d.type||"date"]);function m(e){l.disabled||(d.onOpenChange?.(e),void 0===d.open&&f(e))}function w(e){e.stopPropagation(),e.preventDefault(),m(!0)}function y(){(0,o.untrack)(p)&&m(!1)}function _(e){e.target===t?.shadowRoot?.activeElement&&m(!(0,o.untrack)(p))}function Y(e){void 0===d.value&&h(e),r.onChange?.(e.format(d.parser),e)}function M(e){if(e.detail){let t=(0,a.default)(e.detail);t.isValid()&&Y(t)}}return(0,o.createEffect)(()=>{void 0!==d.open&&d.open!==(0,o.untrack)(p)&&f(d.open)}),(0,o.createEffect)(()=>{let e=(0,a.default)(d.value||d.defaultValue);void 0!==d.value&&e.isValid()&&h(e)}),(0,n.createComponent)(i.default,(0,n.mergeProps)({trigger:"none",placement:"left",get open(){return p()},onOpenChange:m,get css(){return d.css},popupCss:s.styles,get content(){return(0,n.createComponent)(u.default,{get type(){return d.type},get current(){return v()},get open(){return p()},onChange:Y,openChange:m,get showHour(){return d.showHour},get showMinute(){return d.showMinute},get showSecond(){return d.showSecond},get showTime(){return d.showTime},get showToday(){return d.showToday},get showHeader(){return d.showHeader}})}},l,{get children(){let e=c(),o=t;return(0,n.addEventListener)(e,"change",M),(0,n.addEventListener)(e,"blur",y),(0,n.addEventListener)(e,"focus",w),(0,n.addEventListener)(e,"mousedown",_,!0),"function"==typeof o?(0,n.use)(o,e):t=e,e._$owner=(0,n.getOwner)(),(0,n.effect)(t=>{let n=l.disabled,o=d.suffixIcon,r=d.prefixIcon,a=d.placeholder;return n!==t._v$&&(e.disabled=t._v$=n),o!==t._v$2&&(e.suffixIcon=t._v$2=o),r!==t._v$3&&(e.prefixIcon=t._v$3=r),a!==t._v$4&&(e.placeholder=t._v$4=a),t},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),(0,n.effect)(()=>e.value=v().format(g())),e}}))}(t=e||(e={})).date="date",t.month="month",t.year="year",(0,r.customElement)("n-data-picker",{...i.defaultProps,value:void 0,defaultValue:void 0,disabled:void 0,onChange:void 0,open:void 0,onOpenChange:void 0,type:void 0,format:void 0,parser:void 0,showTime:void 0,suffixIcon:"📅",prefixIcon:void 0,placeholder:void 0,showHour:!0,showMinute:!0,showSecond:!0,showToday:!0,showHeader:!0},(e,t)=>{let r=t.element,a=(0,o.mergeProps)({css:r.css,onChange(e,t){r.dispatchEvent(new CustomEvent("change",{detail:[e,t]}))},onOpenChange(e){r.dispatchEvent(new CustomEvent("openchange",{detail:e}))}},e);return(0,o.createEffect)(()=>{r.removeAttribute("css")}),(0,n.createComponent)(p,a)});const f=p;(0,n.delegateEvents)(["mousedown"]);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/date-picker/index.tsx"],"sourcesContent":["import {\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { customElement } from 'solid-element';\nimport dayjs from './dayjs';\nimport Panel from './panel';\nimport { styles } from './style';\nimport '../button';\nimport '../menu';\nimport Popover, { defaultProps } from '../popover';\nimport type { CustomElement, InputElement, PopoverProps } from '..';\n\nfunction DatePicker(_props: DatePickerProps) {\n let ref: InputElement | undefined;\n const props = mergeProps(\n {\n type: 'date' as DatePickerProps['type'],\n parser: 'YYYY-MM-DD HH:mm:ss',\n },\n _props,\n );\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'value',\n 'defaultValue',\n 'onChange',\n 'type',\n 'content',\n 'onOpenChange',\n 'open',\n 'format',\n 'popupCss',\n 'trigger',\n 'parser',\n 'showTime',\n 'showHour',\n 'showMinute',\n 'showSecond',\n 'prefixIcon',\n 'suffixIcon',\n 'placeholder',\n 'showToday',\n 'showHeader',\n ]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [current, setCurrent] = createSignal(dayjs(local.defaultValue));\n\n const format = createMemo(() => {\n if (local.format) {\n return local.format;\n }\n if (local.showTime) return 'YYYY-MM-DD HH:mm:ss';\n return {\n month: 'YYYY-MM',\n date: 'YYYY-MM-DD',\n year: 'YYYY',\n }[local.type || 'date'];\n });\n\n function openChange(next: boolean | null) {\n if (!other.disabled) {\n local.onOpenChange?.(next);\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n\n function focus(e: FocusEvent | MouseEvent) {\n e.stopPropagation();\n e.preventDefault();\n openChange(true);\n }\n function blur() {\n if (untrack(open)) {\n openChange(false);\n }\n }\n function inputMouseDown(e: MouseEvent) {\n if (e.target === (ref?.shadowRoot as ShadowRoot)?.activeElement) {\n openChange(!untrack(open));\n }\n }\n function handleChange(next: dayjs.Dayjs) {\n if (local.value === void 0) {\n setCurrent(next);\n }\n props.onChange?.(next.format(local.parser), next);\n }\n function handleInputChange(e: CustomEvent<string | number | undefined>) {\n if (e.detail) {\n const next = dayjs(e.detail);\n\n if (next.isValid()) {\n handleChange(next);\n }\n }\n }\n\n createEffect(() => {\n if (local.open !== void 0 && local.open !== untrack(open)) {\n setOpen(local.open);\n }\n });\n createEffect(() => {\n const next = dayjs(local.value || local.defaultValue);\n\n if (local.value !== void 0 && next.isValid()) {\n setCurrent(next);\n }\n });\n return (\n <Popover\n trigger=\"none\"\n placement=\"left\"\n open={open()}\n onOpenChange={openChange}\n css={local.css}\n popupCss={styles}\n content={\n <Panel\n type={local.type}\n current={current()}\n open={open()}\n onChange={handleChange}\n openChange={openChange}\n showHour={local.showHour}\n showMinute={local.showMinute}\n showSecond={local.showSecond}\n showTime={local.showTime}\n showToday={local.showToday}\n showHeader={local.showHeader}\n />\n }\n {...other}\n >\n <n-input\n ref={ref}\n onMouseDown={inputMouseDown}\n onFocus={focus}\n onBlur={blur}\n disabled={other.disabled}\n value={current().format(format())}\n suffix-icon={local.suffixIcon}\n prefix-icon={local.prefixIcon}\n placeholder={local.placeholder}\n part=\"value\"\n onChange={handleInputChange}\n />\n </Popover>\n );\n}\n/** API\n * @since 2.1.0\n */\nexport interface DatePickerProps extends Partial<PopoverProps> {\n /** 自定义类名 */\n class?: string;\n /** 自定义类名 */\n css?: string;\n /** 类型\n * @default 'date'\n */\n type?: keyof typeof PickerType;\n /** 值 */\n value?: string | number;\n /** 默认值\n * @default 当前时间\n */\n defaultValue?: string | number;\n /** 禁用 */\n disabled?: boolean;\n /** 格式化回填到输入框的内容\n * @default 'YYYY-MM-DD'\n */\n format?: string;\n /** 格式化获取的值\n * @default 'YYYY-MM-DD HH:mm:ss'\n */\n parser?: string;\n /** 前缀 */\n prefixIcon?: JSX.Element;\n /** 后缀\n * @default '📅'\n */\n suffixIcon?: JSX.Element;\n /** 变更时的回调 */\n onChange?(val: string, time: dayjs.Dayjs): void;\n /** 显示时间选择\n * @default false\n */\n showTime?: boolean;\n /** 显示小时选择\n * @default true\n **/\n showHour?: boolean;\n /** 显示分钟选择\n * @default true\n **/\n showMinute?: boolean;\n /** 显示秒选择\n * @default true\n **/\n showSecond?: boolean;\n /** 占位文本 */\n placeholder?: string;\n /** 显示今日按钮\n * @default true\n */\n showToday?: boolean;\n /** 显示顶部\n * @default true\n */\n showHeader?: boolean;\n}\n\nenum PickerType {\n /** 日期选择 */\n date = 'date',\n /** 月份选择 */\n month = 'month',\n /** 年份选择 */\n year = 'year',\n}\n\nexport type DatePickerElement = CustomElement<DatePickerProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<DatePickerProps>(\n 'n-data-picker',\n {\n ...defaultProps,\n value: void 0,\n defaultValue: void 0,\n disabled: void 0,\n onChange: void 0,\n open: void 0,\n onOpenChange: void 0,\n type: void 0,\n format: void 0,\n parser: void 0,\n showTime: void 0,\n suffixIcon: '📅',\n prefixIcon: void 0,\n placeholder: void 0,\n showHour: true,\n showMinute: true,\n showSecond: true,\n showToday: true,\n showHeader: true,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n onChange(val: string, time: dayjs.Dayjs) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [val, time],\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('css');\n });\n return createComponent(DatePicker, props);\n },\n);\nexport default DatePicker;\n"],"names":["PickerType","DatePicker","_props","ref","props","mergeProps","type","parser","local","other","splitProps","open","setOpen","createSignal","current","setCurrent","dayjs","defaultValue","format","createMemo","showTime","month","date","year","openChange","next","disabled","onOpenChange","focus","e","stopPropagation","preventDefault","blur","untrack","inputMouseDown","target","shadowRoot","activeElement","handleChange","value","onChange","handleInputChange","detail","isValid","createEffect","Popover","css","styles","Panel","showHour","showMinute","showSecond","showToday","showHeader","suffixIcon","prefixIcon","placeholder","customElement","defaultProps","_","opt","el","element","val","time","dispatchEvent","CustomEvent","removeAttribute","createComponent"],"rangeMappings":"","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../components/date-picker/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, mergeProps, splitProps, untrack } from 'solid-js';\nimport { customElement } from 'solid-element';\nimport dayjs from './dayjs';\nimport Panel from './panel';\nimport { styles } from './style';\nimport '../button';\nimport '../menu';\nimport Popover, { defaultProps } from '../popover';\nimport type { CustomElement, InputElement, PopoverProps } from '..';\n\nfunction DatePicker(_props: DatePickerProps) {\n let ref: InputElement | undefined;\n const props = mergeProps(\n {\n type: 'date' as DatePickerProps['type'],\n parser: 'YYYY-MM-DD HH:mm:ss',\n },\n _props,\n );\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'value',\n 'defaultValue',\n 'onChange',\n 'type',\n 'content',\n 'onOpenChange',\n 'open',\n 'format',\n 'popupCss',\n 'trigger',\n 'parser',\n 'showTime',\n 'showHour',\n 'showMinute',\n 'showSecond',\n 'prefixIcon',\n 'suffixIcon',\n 'placeholder',\n 'showToday',\n 'showHeader',\n ]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [current, setCurrent] = createSignal(dayjs(local.defaultValue));\n\n const format = createMemo(() => {\n if (local.format) {\n return local.format;\n }\n if (local.showTime) return 'YYYY-MM-DD HH:mm:ss';\n return {\n month: 'YYYY-MM',\n date: 'YYYY-MM-DD',\n year: 'YYYY',\n }[local.type || 'date'];\n });\n\n function openChange(next: boolean | null) {\n if (!other.disabled) {\n local.onOpenChange?.(next);\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n\n function focus(e: FocusEvent | MouseEvent) {\n e.stopPropagation();\n e.preventDefault();\n openChange(true);\n }\n function blur() {\n if (untrack(open)) {\n openChange(false);\n }\n }\n function inputMouseDown(e: MouseEvent) {\n if (e.target === (ref?.shadowRoot as ShadowRoot)?.activeElement) {\n openChange(!untrack(open));\n }\n }\n function handleChange(next: dayjs.Dayjs) {\n if (local.value === void 0) {\n setCurrent(next);\n }\n props.onChange?.(next.format(local.parser), next);\n }\n function handleInputChange(e: CustomEvent<string | number | undefined>) {\n if (e.detail) {\n const next = dayjs(e.detail);\n\n if (next.isValid()) {\n handleChange(next);\n }\n }\n }\n\n createEffect(() => {\n if (local.open !== void 0 && local.open !== untrack(open)) {\n setOpen(local.open);\n }\n });\n createEffect(() => {\n const next = dayjs(local.value || local.defaultValue);\n\n if (local.value !== void 0 && next.isValid()) {\n setCurrent(next);\n }\n });\n return (\n <Popover\n trigger=\"none\"\n placement=\"left\"\n open={open()}\n onOpenChange={openChange}\n css={local.css}\n popupCss={styles}\n content={\n <Panel\n type={local.type}\n current={current()}\n open={open()}\n onChange={handleChange}\n openChange={openChange}\n showHour={local.showHour}\n showMinute={local.showMinute}\n showSecond={local.showSecond}\n showTime={local.showTime}\n showToday={local.showToday}\n showHeader={local.showHeader}\n />\n }\n {...other}\n >\n <n-input\n ref={ref}\n onMouseDown={inputMouseDown}\n onFocus={focus}\n onBlur={blur}\n disabled={other.disabled}\n value={current().format(format())}\n suffix-icon={local.suffixIcon}\n prefix-icon={local.prefixIcon}\n placeholder={local.placeholder}\n part=\"value\"\n onChange={handleInputChange}\n />\n </Popover>\n );\n}\n/** API\n * @since 2.1.0\n */\nexport interface DatePickerProps extends Partial<PopoverProps> {\n /** 自定义类名 */\n class?: string;\n /** 自定义类名 */\n css?: string;\n /** 类型\n * @default 'date'\n */\n type?: keyof typeof PickerType;\n /** 值 */\n value?: string | number;\n /** 默认值\n * @default 当前时间\n */\n defaultValue?: string | number;\n /** 禁用 */\n disabled?: boolean;\n /** 格式化回填到输入框的内容\n * @default 'YYYY-MM-DD'\n */\n format?: string;\n /** 格式化获取的值\n * @default 'YYYY-MM-DD HH:mm:ss'\n */\n parser?: string;\n /** 前缀 */\n prefixIcon?: JSX.Element;\n /** 后缀\n * @default '📅'\n */\n suffixIcon?: JSX.Element;\n /** 变更时的回调 */\n onChange?(val: string, time: dayjs.Dayjs): void;\n /** 显示时间选择\n * @default false\n */\n showTime?: boolean;\n /** 显示小时选择\n * @default true\n **/\n showHour?: boolean;\n /** 显示分钟选择\n * @default true\n **/\n showMinute?: boolean;\n /** 显示秒选择\n * @default true\n **/\n showSecond?: boolean;\n /** 占位文本 */\n placeholder?: string;\n /** 显示今日按钮\n * @default true\n */\n showToday?: boolean;\n /** 显示顶部\n * @default true\n */\n showHeader?: boolean;\n}\n\nenum PickerType {\n /** 日期选择 */\n date = 'date',\n /** 月份选择 */\n month = 'month',\n /** 年份选择 */\n year = 'year',\n}\n\nexport type DatePickerElement = CustomElement<DatePickerProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<DatePickerProps>(\n 'n-data-picker',\n {\n ...defaultProps,\n value: void 0,\n defaultValue: void 0,\n disabled: void 0,\n onChange: void 0,\n open: void 0,\n onOpenChange: void 0,\n type: void 0,\n format: void 0,\n parser: void 0,\n showTime: void 0,\n suffixIcon: '📅',\n prefixIcon: void 0,\n placeholder: void 0,\n showHour: true,\n showMinute: true,\n showSecond: true,\n showToday: true,\n showHeader: true,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n onChange(val: string, time: dayjs.Dayjs) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [val, time],\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('css');\n });\n return <DatePicker {...props} />;\n },\n);\nexport default DatePicker;\n"],"names":["PickerType","DatePicker","_props","ref","props","mergeProps","type","parser","local","other","splitProps","open","setOpen","createSignal","current","setCurrent","dayjs","defaultValue","format","createMemo","showTime","month","date","year","openChange","next","disabled","onOpenChange","focus","e","stopPropagation","preventDefault","blur","untrack","inputMouseDown","target","shadowRoot","activeElement","handleChange","value","onChange","handleInputChange","detail","isValid","createEffect","Popover","css","styles","Panel","showHour","showMinute","showSecond","showToday","showHeader","suffixIcon","prefixIcon","placeholder","customElement","defaultProps","_","opt","el","element","val","time","dispatchEvent","CustomEvent","removeAttribute"],"rangeMappings":"","mappings":"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"}
|
package/lib/date-picker/month.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(exports,{default:function(){return i},months:function(){return
|
|
1
|
+
"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(exports,{default:function(){return i},months:function(){return u}});const t=require("solid-js/web"),r=require("solid-js"),n=(e=require("./dayjs"))&&e.__esModule?e:{default:e},o=(0,t.template)('<n-button type="primary" class="date-picker-month">',!0,!1),u=n.default.monthsShort(),i=function(e){return(0,t.createComponent)(r.For,{each:u,children:(n,u)=>{let i=(0,r.createMemo)(()=>e.current.get("month")===u());function c(){e.onChange(e.current.set("month",u()))}return(()=>{let e=o();return(0,t.addEventListener)(e,"click",c,!0),e.flat=!0,e._$owner=(0,t.getOwner)(),(0,t.insert)(e,n),(0,t.effect)(t=>{let r=!!i(),n=i()?"strong":"button";return r!==t._v$&&e.classList.toggle("date-active",t._v$=r),n!==t._v$2&&(e.tag=t._v$2=n),t},{_v$:void 0,_v$2:void 0}),e})()}})};(0,t.delegateEvents)(["click"]);
|
|
2
2
|
//# sourceMappingURL=month.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/date-picker/month.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport
|
|
1
|
+
{"version":3,"sources":["../../components/date-picker/month.tsx"],"sourcesContent":["import { For, createMemo } from 'solid-js';\nimport dayjs from './dayjs';\n\ntype MonthPanelProps = { current: dayjs.Dayjs; onChange(next: dayjs.Dayjs): void };\n\nexport const months = dayjs.monthsShort();\n\nfunction MonthPanel(props: MonthPanelProps) {\n return (\n <For each={months}>\n {(m, i) => {\n const isActive = createMemo(() => {\n return props.current.get('month') === i();\n });\n\n function onChange() {\n props.onChange(props.current.set('month', i()));\n }\n\n return (\n <n-button\n type=\"primary\"\n flat={true}\n class=\"date-picker-month\"\n classList={{\n 'date-active': isActive(),\n }}\n tag={isActive() ? 'strong' : 'button'}\n onClick={onChange}\n >\n {m}\n </n-button>\n );\n }}\n </For>\n );\n}\n\nexport default MonthPanel;\n"],"names":["months","dayjs","monthsShort","props","For","m","i","isActive","createMemo","current","get","onChange","set"],"rangeMappings":"","mappings":"qKAsCA,OAA0B,mBAA1B,GAjCaA,MAAM,mBAANA,+CALmB,yBACd,sHAILA,EAASC,SAAK,CAACC,WAAW,GAiCvC,EA/BA,SAAoBC,CAAsB,EACxC,4BACGC,KAAG,OAAOJ,WACR,CAACK,EAAGC,KACH,IAAMC,EAAWC,GAAAA,YAAU,EAAC,IACnBL,EAAMM,OAAO,CAACC,GAAG,CAAC,WAAaJ,KAGxC,SAASK,IACPR,EAAMQ,QAAQ,CAACR,EAAMM,OAAO,CAACG,GAAG,CAAC,QAASN,KAC5C,CAEA,6DASaK,aANH,CAAA,4CAQLN,4BALgBE,MAEZA,IAAa,SAAW,oIAMnC,GAGN"}
|
package/lib/date-picker/panel.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=i(require("./date")),r=i(require("./dayjs")),a=i(require("./month")),o=i(require("./time")),c=i(require("./year"));function i(e){return e&&e.__esModule?e:{default:e}}const s=(0,e.template)(`<n-button class="prev-month" type="primary">〈`,!0,!1),u=(0,e.template)("<n-button><strong>",!0,!1),l=(0,e.template)(`<n-button class="next-month" type="primary">〉`,!0,!1),h=(0,e.template)(`<section class="date-picker-header"><span class="date-prev"><n-button class="prev-year" type="primary">《</n-button></span><span class="date-value"><n-button><strong></strong></n-button></span><span class="date-next"><n-button class="next-year" type="primary">》`,!0,!1),d=(0,e.template)('<section class="date-picker-weeks">'),g=(0,e.template)(`<section class="date-picker-footer"><n-button type="primary">今日`,!0,!1),p=(0,e.template)('<div class="date-time-picker"><div class="date-picker"><section class="date-picker-items">'),w=(0,e.template)("<span>"),m=function(i){let m;let[f,C]=(0,t.createSignal)(0),[y,$]=(0,t.createSignal)("date"),v=r.default.weekdaysMin(),b=(0,t.createMemo)(()=>"date"===y()),k=(0,t.createMemo)(()=>10*parseInt(`${i.current.get("years")/10+f()}`));function _(e){i.open&&(e.stopPropagation(),e.preventDefault())}function S(){"year"===y()?C(e=>e-1):i.onChange(i.current.subtract(1,"year"))}function M(){"year"===y()?C(e=>e+1):i.onChange(i.current.subtract(-1,"year"))}function O(){i.onChange(i.current.subtract(1,"month"))}function E(){i.onChange(i.current.subtract(-1,"month"))}function q(e){i.onChange(e),y()===i.type?i.openChange(!1):$(i.type)}return(0,t.createEffect)(()=>{"year"!==y()&&C(e=>e?0:e)}),(0,t.createEffect)(()=>{i.type&&$(i.type)}),(()=>{let f=p(),C=f.firstChild,x=m,L=C.firstChild;return(0,e.addEventListener)(C,"mousedown",_,!0),"function"==typeof x?(0,e.use)(x,C):m=C,(0,e.insert)(C,(0,e.createComponent)(t.Show,{get when(){return i.showHeader},get children(){let n=h(),r=n.firstChild,a=r.firstChild,o=r.nextSibling,c=o.firstChild,d=c.firstChild,g=o.nextSibling,p=g.firstChild;return(0,e.addEventListener)(a,"click",S,!0),a.circle=!0,a.flat=!0,a._$owner=(0,e.getOwner)(),(0,e.insert)(r,(0,e.createComponent)(t.Show,{get when(){return b()},get children(){let t=s();return(0,e.addEventListener)(t,"click",O,!0),t.circle=!0,t.flat=!0,t._$owner=(0,e.getOwner)(),t}}),null),c.$$click=()=>$("year"),c.ghost=!0,c.flat=!0,c._$owner=(0,e.getOwner)(),(0,e.insert)(d,(0,e.createComponent)(t.Show,{get when(){return"year"===y()},get fallback(){return`${i.current.get("years")}年`},get children(){return`${k()}-${k()+9}年`}})),(0,e.insert)(o,(0,e.createComponent)(t.Show,{get when(){return b()},get children(){let t=u(),n=t.firstChild;return t.$$click=()=>$("month"),t.ghost=!0,t.flat=!0,t._$owner=(0,e.getOwner)(),(0,e.insert)(n,()=>`${i.current.get("months")+1}月`),t}}),null),(0,e.insert)(g,(0,e.createComponent)(t.Show,{get when(){return b()},get children(){let t=l();return(0,e.addEventListener)(t,"click",E,!0),t.circle=!0,t.flat=!0,t._$owner=(0,e.getOwner)(),t}}),p),(0,e.addEventListener)(p,"click",M,!0),p.circle=!0,p.flat=!0,p._$owner=(0,e.getOwner)(),(0,e.effect)(e=>{let t=!b(),n=!b();return t!==e._v$&&r.classList.toggle("not-date",e._v$=t),n!==e._v$2&&g.classList.toggle("not-date",e._v$2=n),e},{_v$:void 0,_v$2:void 0}),n}}),L),(0,e.insert)(C,(0,e.createComponent)(t.Show,{get when(){return b()},get children(){let n=d();return(0,e.insert)(n,(0,e.createComponent)(t.For,{each:v,children:t=>(()=>{let n=w();return(0,e.insert)(n,t),n})()})),n}}),L),(0,e.insert)(L,(0,e.createComponent)(t.Switch,{get children(){return[(0,e.createComponent)(t.Match,{get when(){return b()},get children(){return(0,e.createComponent)(n.default,{get current(){return i.current},onChange:q})}}),(0,e.createComponent)(t.Match,{get when(){return"month"===y()},get children(){return(0,e.createComponent)(a.default,{get current(){return i.current},onChange:q})}}),(0,e.createComponent)(t.Match,{get when(){return"year"===y()},get children(){return(0,e.createComponent)(c.default,{get current(){return i.current},onChange:q,get start(){return k()}})}})]}})),(0,e.insert)(C,(0,e.createComponent)(t.Show,{get when(){return b()&&i.showToday},get children(){let t=g(),n=t.firstChild;return n.$$click=()=>i.onChange((0,r.default)()),n.block=!0,n.link=!0,n._$owner=(0,e.getOwner)(),t}}),null),(0,e.insert)(f,(0,e.createComponent)(t.Show,{get when(){return b()&&i.showTime},get children(){return(0,e.createComponent)(o.default,{get current(){return i.current},get onChange(){return i.onChange},get showHour(){return i.showHour},get showMinute(){return i.showMinute},get showSecond(){return i.showSecond},datePicker:m})}}),null),f})()};(0,e.delegateEvents)(["click","mousedown"]);
|
|
2
2
|
//# sourceMappingURL=panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/date-picker/panel.tsx"],"sourcesContent":["import { For, Match, Show, Switch, createEffect, createMemo, createSignal } from 'solid-js';\nimport
|
|
1
|
+
{"version":3,"sources":["../../components/date-picker/panel.tsx"],"sourcesContent":["import { For, Match, Show, Switch, createEffect, createMemo, createSignal } from 'solid-js';\nimport DatePanel from './date';\nimport dayjs from './dayjs';\nimport MonthPanel from './month';\nimport TimePicker from './time';\nimport YearPanel from './year';\nimport type { DatePickerProps } from '.';\n\ntype PanelProps = {\n current: dayjs.Dayjs;\n type?: DatePickerProps['type'];\n onChange(val: dayjs.Dayjs): void;\n open: boolean | null;\n openChange(val: boolean | null): void;\n showHour?: boolean;\n showMinute?: boolean;\n showSecond?: boolean;\n showTime?: boolean;\n showToday?: boolean;\n showHeader?: boolean;\n};\n\nfunction preventDefault(e: Event) {\n e.stopPropagation();\n e.preventDefault();\n}\n\nfunction Panel(props: PanelProps) {\n let datePicker: HTMLDivElement | undefined;\n const [offset, setOffset] = createSignal(0);\n const [type, setType] = createSignal<DatePickerProps['type']>('date');\n\n const weekdays = dayjs.weekdaysMin();\n const isDate = createMemo(() => type() === 'date');\n const startYear = createMemo(\n () => parseInt(`${props.current.get('years') / 10 + offset()}`) * 10,\n );\n\n function handleMouseDown(e: MouseEvent) {\n if (props.open) {\n preventDefault(e);\n }\n }\n function setPrevYear() {\n if (type() === 'year') {\n setOffset((prev) => prev - 1);\n } else {\n props.onChange(props.current.subtract(1, 'year'));\n }\n }\n function setNextYear() {\n if (type() === 'year') {\n setOffset((prev) => prev + 1);\n } else {\n props.onChange(props.current.subtract(-1, 'year'));\n }\n }\n function setPrevMonth() {\n props.onChange(props.current.subtract(1, 'month'));\n }\n function setNextMonth() {\n props.onChange(props.current.subtract(-1, 'month'));\n }\n function handleChange(next: dayjs.Dayjs) {\n props.onChange(next);\n if (type() === props.type) {\n props.openChange(false);\n } else {\n setType(props.type);\n }\n }\n createEffect(() => {\n if (type() !== 'year') {\n setOffset((prev) => {\n if (prev) return 0;\n return prev;\n });\n }\n });\n\n createEffect(() => {\n if (props.type) {\n setType(props.type);\n }\n });\n return (\n <div class=\"date-time-picker\">\n <div ref={datePicker} class=\"date-picker\" onMouseDown={handleMouseDown}>\n <Show when={props.showHeader}>\n <section class=\"date-picker-header\">\n <span\n class=\"date-prev\"\n classList={{\n 'not-date': !isDate(),\n }}\n >\n <n-button\n class=\"prev-year\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setPrevYear}\n >\n 《\n </n-button>\n <Show when={isDate()}>\n <n-button\n class=\"prev-month\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setPrevMonth}\n >\n 〈\n </n-button>\n </Show>\n </span>\n <span class=\"date-value\">\n <n-button ghost={true} flat={true} onClick={() => setType('year')}>\n <strong>\n <Show when={type() === 'year'} fallback={`${props.current.get('years')}年`}>\n {`${startYear()}-${startYear() + 9}年`}\n </Show>\n </strong>\n </n-button>\n <Show when={isDate()}>\n <n-button ghost={true} flat={true} onClick={() => setType('month')}>\n <strong>{`${props.current.get('months') + 1}月`}</strong>\n </n-button>\n </Show>\n </span>\n <span\n class=\"date-next\"\n classList={{\n 'not-date': !isDate(),\n }}\n >\n <Show when={isDate()}>\n <n-button\n class=\"next-month\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setNextMonth}\n >\n 〉\n </n-button>\n </Show>\n <n-button\n class=\"next-year\"\n type=\"primary\"\n circle={true}\n flat={true}\n onClick={setNextYear}\n >\n 》\n </n-button>\n </span>\n </section>\n </Show>\n <Show when={isDate()}>\n <section class=\"date-picker-weeks\">\n <For each={weekdays}>{(e) => <span>{e}</span>}</For>\n </section>\n </Show>\n <section class=\"date-picker-items\">\n <Switch>\n <Match when={isDate()}>\n <DatePanel current={props.current} onChange={handleChange} />\n </Match>\n <Match when={type() === 'month'}>\n <MonthPanel current={props.current} onChange={handleChange} />\n </Match>\n <Match when={type() === 'year'}>\n <YearPanel current={props.current} onChange={handleChange} start={startYear()} />\n </Match>\n </Switch>\n </section>\n <Show when={isDate() && props.showToday}>\n <section class=\"date-picker-footer\">\n <n-button\n type=\"primary\"\n block={true}\n link={true}\n onClick={() => props.onChange(dayjs())}\n >\n 今日\n </n-button>\n </section>\n </Show>\n </div>\n <Show when={isDate() && props.showTime}>\n <TimePicker\n current={props.current}\n onChange={props.onChange}\n showHour={props.showHour}\n showMinute={props.showMinute}\n showSecond={props.showSecond}\n datePicker={datePicker}\n />\n </Show>\n </div>\n );\n}\n\nexport default Panel;\n"],"names":["props","datePicker","offset","setOffset","createSignal","type","setType","weekdays","dayjs","weekdaysMin","isDate","createMemo","startYear","parseInt","current","get","handleMouseDown","e","open","stopPropagation","preventDefault","setPrevYear","prev","onChange","subtract","setNextYear","setPrevMonth","setNextMonth","handleChange","next","openChange","createEffect","Show","showHeader","For","Switch","Match","DatePanel","MonthPanel","YearPanel","showToday","showTime","TimePicker","showHour","showMinute","showSecond"],"rangeMappings":"","mappings":"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"}
|
package/lib/date-picker/year.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 n}});const e=require("solid-js/web"),t=require("solid-js"),r=(0,e.template)('<n-button type="primary" class="date-picker-month">',!0,!1),n=function(n){let o=(0,t.createMemo)(()=>{let e=n.start;return[e-1,...Array.from({length:10},(t,r)=>e+r),e+10]});return(0,e.createComponent)(t.For,{get each(){return o()},children:(t,s)=>{function a(){n.onChange(n.current.set("years",t))}return(()=>{let c=r();return(0,e.addEventListener)(c,"click",a,!0),c.flat=!0,c._$owner=(0,e.getOwner)(),(0,e.insert)(c,t),(0,e.effect)(e=>{let r=!(0!==s()&&s()!==o().length-1),a=!(n.current.get("years")!==t),i=n.current.get("years")===t?"strong":"button";return r!==e._v$&&c.classList.toggle("date-opacity",e._v$=r),a!==e._v$2&&c.classList.toggle("date-active",e._v$2=a),i!==e._v$3&&(c.tag=e._v$3=i),e},{_v$:void 0,_v$2:void 0,_v$3:void 0}),c})()}})};(0,e.delegateEvents)(["click"]);
|
|
2
2
|
//# sourceMappingURL=year.js.map
|