@sunggang/ui-lib 0.4.19 → 0.4.20
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/baseSwitch.cjs.js +112 -8
- package/baseSwitch.esm.js +112 -9
- package/index.cjs.css +0 -606
- package/index.cjs.js +14 -2
- package/index.esm.css +0 -606
- package/index.esm.js +15 -2
- package/package.json +1 -1
- package/src/components/ui/react-date-range-css.d.ts +7 -0
- package/src/components/ui/reactDateRange.d.ts +1 -3
- package/src/lib/Form/FlatpickrField/flatpickr-css.d.ts +5 -0
- package/src/lib/Form/FlatpickrField/useInjectCSS.d.ts +14 -0
- package/src/lib/Form/demo.d.ts +2 -2
package/baseSwitch.cjs.js
CHANGED
|
@@ -22249,6 +22249,54 @@ var DropdownList = function(param) {
|
|
|
22249
22249
|
}, item.name);
|
|
22250
22250
|
};
|
|
22251
22251
|
|
|
22252
|
+
/**
|
|
22253
|
+
* Flatpickr CSS styles as a string constant
|
|
22254
|
+
* This allows the component to inject styles dynamically without requiring external CSS imports
|
|
22255
|
+
*/ var FLATPICKR_CSS = '.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:\'\';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}';
|
|
22256
|
+
|
|
22257
|
+
/**
|
|
22258
|
+
* Custom hook for dynamically injecting CSS into the document head
|
|
22259
|
+
* This allows components to include their required styles without external CSS imports
|
|
22260
|
+
*
|
|
22261
|
+
* @param css - The CSS string to inject
|
|
22262
|
+
* @param id - Unique identifier for the style element (to prevent duplicates)
|
|
22263
|
+
* @param cleanup - Whether to remove the style element when component unmounts (default: false)
|
|
22264
|
+
*/ var useInjectCSS = function(css, id) {
|
|
22265
|
+
var cleanup = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
|
|
22266
|
+
React.useEffect(function() {
|
|
22267
|
+
// Check if the style is already injected
|
|
22268
|
+
if (document.getElementById(id)) {
|
|
22269
|
+
return;
|
|
22270
|
+
}
|
|
22271
|
+
// Create a new style element
|
|
22272
|
+
var styleElement = document.createElement("style");
|
|
22273
|
+
styleElement.id = id;
|
|
22274
|
+
styleElement.type = "text/css";
|
|
22275
|
+
styleElement.innerHTML = css;
|
|
22276
|
+
// Append to document head
|
|
22277
|
+
document.head.appendChild(styleElement);
|
|
22278
|
+
// Cleanup function (only if cleanup is true)
|
|
22279
|
+
return function() {
|
|
22280
|
+
if (cleanup) {
|
|
22281
|
+
var existingStyle = document.getElementById(id);
|
|
22282
|
+
if (existingStyle) {
|
|
22283
|
+
document.head.removeChild(existingStyle);
|
|
22284
|
+
}
|
|
22285
|
+
}
|
|
22286
|
+
};
|
|
22287
|
+
}, [
|
|
22288
|
+
css,
|
|
22289
|
+
id,
|
|
22290
|
+
cleanup
|
|
22291
|
+
]);
|
|
22292
|
+
};
|
|
22293
|
+
/**
|
|
22294
|
+
* Hook specifically for injecting global styles that should persist
|
|
22295
|
+
* across component mounts/unmounts
|
|
22296
|
+
*/ var useInjectGlobalCSS = function(css, id) {
|
|
22297
|
+
return useInjectCSS(css, id, false);
|
|
22298
|
+
};
|
|
22299
|
+
|
|
22252
22300
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
22253
22301
|
// @ts-nocheck
|
|
22254
22302
|
function _define_property$2(obj, key, value) {
|
|
@@ -22331,9 +22379,18 @@ var FlatpickrInput = /*#__PURE__*/ React.forwardRef(function(param, ref) {
|
|
|
22331
22379
|
if (options.mode === "range") {
|
|
22332
22380
|
options.allowInvalidPreload = true; // 允許預載不完整的範圍
|
|
22333
22381
|
}
|
|
22382
|
+
// 時間選擇器的特殊配置
|
|
22383
|
+
if ((item === null || item === void 0 ? void 0 : item.flatpickrType) === "time") {
|
|
22384
|
+
options.enableTime = true;
|
|
22385
|
+
options.noCalendar = true;
|
|
22386
|
+
options.dateFormat = "H:i";
|
|
22387
|
+
options.allowInput = true; // 允許手動輸入,讓用戶可以清除內容
|
|
22388
|
+
options.clickOpens = true;
|
|
22389
|
+
}
|
|
22334
22390
|
return options;
|
|
22335
22391
|
}, [
|
|
22336
|
-
item === null || item === void 0 ? void 0 : item.flatpickrOptions
|
|
22392
|
+
item === null || item === void 0 ? void 0 : item.flatpickrOptions,
|
|
22393
|
+
item === null || item === void 0 ? void 0 : item.flatpickrType
|
|
22337
22394
|
]);
|
|
22338
22395
|
var isDisabled = (item === null || item === void 0 ? void 0 : item.disable) || (item === null || item === void 0 ? void 0 : item.disabled);
|
|
22339
22396
|
var initializeFlatpickr = React.useCallback(function() {
|
|
@@ -22352,8 +22409,15 @@ var FlatpickrInput = /*#__PURE__*/ React.forwardRef(function(param, ref) {
|
|
|
22352
22409
|
instance.close();
|
|
22353
22410
|
}, 50);
|
|
22354
22411
|
}
|
|
22355
|
-
} else if (mode === "multiple"
|
|
22412
|
+
} else if (mode === "multiple") {
|
|
22356
22413
|
onChange(selectedDates);
|
|
22414
|
+
} else if ((item === null || item === void 0 ? void 0 : item.flatpickrType) === "time") {
|
|
22415
|
+
// 時間選擇器:處理清除和選擇
|
|
22416
|
+
if (selectedDates.length === 0) {
|
|
22417
|
+
onChange(null); // 清除時設為 null
|
|
22418
|
+
} else {
|
|
22419
|
+
onChange(selectedDates);
|
|
22420
|
+
}
|
|
22357
22421
|
} else {
|
|
22358
22422
|
// Single mode: 返回單一日期,預設行為會自動關閉
|
|
22359
22423
|
onChange(selectedDates.length > 0 ? selectedDates[0] : null);
|
|
@@ -22385,6 +22449,40 @@ var FlatpickrInput = /*#__PURE__*/ React.forwardRef(function(param, ref) {
|
|
|
22385
22449
|
}
|
|
22386
22450
|
}
|
|
22387
22451
|
}, []);
|
|
22452
|
+
// 清除值的函數
|
|
22453
|
+
var clearValue = React.useCallback(function() {
|
|
22454
|
+
if (flatpickrInstance.current) {
|
|
22455
|
+
flatpickrInstance.current.clear();
|
|
22456
|
+
}
|
|
22457
|
+
onChange(null);
|
|
22458
|
+
}, [
|
|
22459
|
+
onChange
|
|
22460
|
+
]);
|
|
22461
|
+
// 檢查是否有值(用於顯示清除按鈕和鍵盤處理)
|
|
22462
|
+
var hasValue = React.useMemo(function() {
|
|
22463
|
+
if (value === null || value === undefined || value === "") {
|
|
22464
|
+
return false;
|
|
22465
|
+
}
|
|
22466
|
+
// 處理陣列類型的值(範圍選擇器)
|
|
22467
|
+
if (Array.isArray(value)) {
|
|
22468
|
+
return value.length > 0;
|
|
22469
|
+
}
|
|
22470
|
+
return true;
|
|
22471
|
+
}, [
|
|
22472
|
+
value
|
|
22473
|
+
]);
|
|
22474
|
+
// 鍵盤事件處理函數
|
|
22475
|
+
var handleKeyDown = React.useCallback(function(e) {
|
|
22476
|
+
// 檢測 Delete 鍵 (keyCode 46) 或 Backspace 鍵 (keyCode 8)
|
|
22477
|
+
if ((e.key === "Delete" || e.key === "Backspace" || e.keyCode === 46 || e.keyCode === 8) && hasValue && !isDisabled) {
|
|
22478
|
+
e.preventDefault(); // 防止預設的刪除行為
|
|
22479
|
+
clearValue(); // 清除值
|
|
22480
|
+
}
|
|
22481
|
+
}, [
|
|
22482
|
+
hasValue,
|
|
22483
|
+
isDisabled,
|
|
22484
|
+
clearValue
|
|
22485
|
+
]);
|
|
22388
22486
|
React.useImperativeHandle(ref, function() {
|
|
22389
22487
|
return {
|
|
22390
22488
|
getInstance: function() {
|
|
@@ -22406,7 +22504,9 @@ var FlatpickrInput = /*#__PURE__*/ React.forwardRef(function(param, ref) {
|
|
|
22406
22504
|
// 初始化和清理
|
|
22407
22505
|
React__default["default"].useEffect(function() {
|
|
22408
22506
|
initializeFlatpickr();
|
|
22409
|
-
}, [
|
|
22507
|
+
}, [
|
|
22508
|
+
initializeFlatpickr
|
|
22509
|
+
]);
|
|
22410
22510
|
// 當值變化時更新 flatpickr
|
|
22411
22511
|
React__default["default"].useEffect(function() {
|
|
22412
22512
|
updateFlatpickr(value);
|
|
@@ -22427,13 +22527,14 @@ var FlatpickrInput = /*#__PURE__*/ React.forwardRef(function(param, ref) {
|
|
|
22427
22527
|
placeholder: (item === null || item === void 0 ? void 0 : item.placeholder) || "請選擇日期",
|
|
22428
22528
|
style: item === null || item === void 0 ? void 0 : item.style,
|
|
22429
22529
|
disabled: isDisabled,
|
|
22430
|
-
readOnly:
|
|
22530
|
+
readOnly: isDisabled,
|
|
22531
|
+
onKeyDown: handleKeyDown,
|
|
22431
22532
|
autoComplete: "off"
|
|
22432
22533
|
}),
|
|
22433
|
-
|
|
22434
|
-
className: "absolute right-3 top-1/2 transform -translate-y-1/2
|
|
22435
|
-
children: /*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
22436
|
-
className: "w-5 h-5 text-[#B4B4B4]",
|
|
22534
|
+
/*#__PURE__*/ jsxRuntime.jsx("div", {
|
|
22535
|
+
className: "absolute right-3 top-1/2 transform -translate-y-1/2 flex items-center space-x-2",
|
|
22536
|
+
children: (item === null || item === void 0 ? void 0 : item.icon) && /*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
22537
|
+
className: "w-5 h-5 text-[#B4B4B4] pointer-events-none",
|
|
22437
22538
|
children: /*#__PURE__*/ jsxRuntime.jsx(react$1.Icon, {
|
|
22438
22539
|
icon: item.icon || "solar:calendar-linear",
|
|
22439
22540
|
width: "1.5rem",
|
|
@@ -22447,6 +22548,8 @@ var FlatpickrInput = /*#__PURE__*/ React.forwardRef(function(param, ref) {
|
|
|
22447
22548
|
FlatpickrInput.displayName = "FlatpickrInput";
|
|
22448
22549
|
var FlatpickrField = function(param) {
|
|
22449
22550
|
var item = param.item;
|
|
22551
|
+
// 動態注入 flatpickr CSS,避免外部專案需要手動 import CSS
|
|
22552
|
+
useInjectGlobalCSS(FLATPICKR_CSS, "flatpickr-styles");
|
|
22450
22553
|
var _useFormContext = index_esm.useFormContext(), control = _useFormContext.control, errors = _useFormContext.formState.errors;
|
|
22451
22554
|
var errorItem = errors[item.name];
|
|
22452
22555
|
return /*#__PURE__*/ jsxRuntime.jsxs("div", {
|
|
@@ -23458,4 +23561,5 @@ exports.SelectSeparator = SelectSeparator;
|
|
|
23458
23561
|
exports.SelectTrigger = SelectTrigger;
|
|
23459
23562
|
exports.SelectValue = SelectValue;
|
|
23460
23563
|
exports.Textarea = Textarea;
|
|
23564
|
+
exports.useInjectGlobalCSS = useInjectGlobalCSS;
|
|
23461
23565
|
exports.validateMsg = validateMsg;
|
package/baseSwitch.esm.js
CHANGED
|
@@ -22220,6 +22220,54 @@ var DropdownList = function(param) {
|
|
|
22220
22220
|
}, item.name);
|
|
22221
22221
|
};
|
|
22222
22222
|
|
|
22223
|
+
/**
|
|
22224
|
+
* Flatpickr CSS styles as a string constant
|
|
22225
|
+
* This allows the component to inject styles dynamically without requiring external CSS imports
|
|
22226
|
+
*/ var FLATPICKR_CSS = '.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:\'\';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}';
|
|
22227
|
+
|
|
22228
|
+
/**
|
|
22229
|
+
* Custom hook for dynamically injecting CSS into the document head
|
|
22230
|
+
* This allows components to include their required styles without external CSS imports
|
|
22231
|
+
*
|
|
22232
|
+
* @param css - The CSS string to inject
|
|
22233
|
+
* @param id - Unique identifier for the style element (to prevent duplicates)
|
|
22234
|
+
* @param cleanup - Whether to remove the style element when component unmounts (default: false)
|
|
22235
|
+
*/ var useInjectCSS = function(css, id) {
|
|
22236
|
+
var cleanup = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
|
|
22237
|
+
useEffect(function() {
|
|
22238
|
+
// Check if the style is already injected
|
|
22239
|
+
if (document.getElementById(id)) {
|
|
22240
|
+
return;
|
|
22241
|
+
}
|
|
22242
|
+
// Create a new style element
|
|
22243
|
+
var styleElement = document.createElement("style");
|
|
22244
|
+
styleElement.id = id;
|
|
22245
|
+
styleElement.type = "text/css";
|
|
22246
|
+
styleElement.innerHTML = css;
|
|
22247
|
+
// Append to document head
|
|
22248
|
+
document.head.appendChild(styleElement);
|
|
22249
|
+
// Cleanup function (only if cleanup is true)
|
|
22250
|
+
return function() {
|
|
22251
|
+
if (cleanup) {
|
|
22252
|
+
var existingStyle = document.getElementById(id);
|
|
22253
|
+
if (existingStyle) {
|
|
22254
|
+
document.head.removeChild(existingStyle);
|
|
22255
|
+
}
|
|
22256
|
+
}
|
|
22257
|
+
};
|
|
22258
|
+
}, [
|
|
22259
|
+
css,
|
|
22260
|
+
id,
|
|
22261
|
+
cleanup
|
|
22262
|
+
]);
|
|
22263
|
+
};
|
|
22264
|
+
/**
|
|
22265
|
+
* Hook specifically for injecting global styles that should persist
|
|
22266
|
+
* across component mounts/unmounts
|
|
22267
|
+
*/ var useInjectGlobalCSS = function(css, id) {
|
|
22268
|
+
return useInjectCSS(css, id, false);
|
|
22269
|
+
};
|
|
22270
|
+
|
|
22223
22271
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
22224
22272
|
// @ts-nocheck
|
|
22225
22273
|
function _define_property$2(obj, key, value) {
|
|
@@ -22302,9 +22350,18 @@ var FlatpickrInput = /*#__PURE__*/ forwardRef(function(param, ref) {
|
|
|
22302
22350
|
if (options.mode === "range") {
|
|
22303
22351
|
options.allowInvalidPreload = true; // 允許預載不完整的範圍
|
|
22304
22352
|
}
|
|
22353
|
+
// 時間選擇器的特殊配置
|
|
22354
|
+
if ((item === null || item === void 0 ? void 0 : item.flatpickrType) === "time") {
|
|
22355
|
+
options.enableTime = true;
|
|
22356
|
+
options.noCalendar = true;
|
|
22357
|
+
options.dateFormat = "H:i";
|
|
22358
|
+
options.allowInput = true; // 允許手動輸入,讓用戶可以清除內容
|
|
22359
|
+
options.clickOpens = true;
|
|
22360
|
+
}
|
|
22305
22361
|
return options;
|
|
22306
22362
|
}, [
|
|
22307
|
-
item === null || item === void 0 ? void 0 : item.flatpickrOptions
|
|
22363
|
+
item === null || item === void 0 ? void 0 : item.flatpickrOptions,
|
|
22364
|
+
item === null || item === void 0 ? void 0 : item.flatpickrType
|
|
22308
22365
|
]);
|
|
22309
22366
|
var isDisabled = (item === null || item === void 0 ? void 0 : item.disable) || (item === null || item === void 0 ? void 0 : item.disabled);
|
|
22310
22367
|
var initializeFlatpickr = useCallback(function() {
|
|
@@ -22323,8 +22380,15 @@ var FlatpickrInput = /*#__PURE__*/ forwardRef(function(param, ref) {
|
|
|
22323
22380
|
instance.close();
|
|
22324
22381
|
}, 50);
|
|
22325
22382
|
}
|
|
22326
|
-
} else if (mode === "multiple"
|
|
22383
|
+
} else if (mode === "multiple") {
|
|
22327
22384
|
onChange(selectedDates);
|
|
22385
|
+
} else if ((item === null || item === void 0 ? void 0 : item.flatpickrType) === "time") {
|
|
22386
|
+
// 時間選擇器:處理清除和選擇
|
|
22387
|
+
if (selectedDates.length === 0) {
|
|
22388
|
+
onChange(null); // 清除時設為 null
|
|
22389
|
+
} else {
|
|
22390
|
+
onChange(selectedDates);
|
|
22391
|
+
}
|
|
22328
22392
|
} else {
|
|
22329
22393
|
// Single mode: 返回單一日期,預設行為會自動關閉
|
|
22330
22394
|
onChange(selectedDates.length > 0 ? selectedDates[0] : null);
|
|
@@ -22356,6 +22420,40 @@ var FlatpickrInput = /*#__PURE__*/ forwardRef(function(param, ref) {
|
|
|
22356
22420
|
}
|
|
22357
22421
|
}
|
|
22358
22422
|
}, []);
|
|
22423
|
+
// 清除值的函數
|
|
22424
|
+
var clearValue = useCallback(function() {
|
|
22425
|
+
if (flatpickrInstance.current) {
|
|
22426
|
+
flatpickrInstance.current.clear();
|
|
22427
|
+
}
|
|
22428
|
+
onChange(null);
|
|
22429
|
+
}, [
|
|
22430
|
+
onChange
|
|
22431
|
+
]);
|
|
22432
|
+
// 檢查是否有值(用於顯示清除按鈕和鍵盤處理)
|
|
22433
|
+
var hasValue = useMemo(function() {
|
|
22434
|
+
if (value === null || value === undefined || value === "") {
|
|
22435
|
+
return false;
|
|
22436
|
+
}
|
|
22437
|
+
// 處理陣列類型的值(範圍選擇器)
|
|
22438
|
+
if (Array.isArray(value)) {
|
|
22439
|
+
return value.length > 0;
|
|
22440
|
+
}
|
|
22441
|
+
return true;
|
|
22442
|
+
}, [
|
|
22443
|
+
value
|
|
22444
|
+
]);
|
|
22445
|
+
// 鍵盤事件處理函數
|
|
22446
|
+
var handleKeyDown = useCallback(function(e) {
|
|
22447
|
+
// 檢測 Delete 鍵 (keyCode 46) 或 Backspace 鍵 (keyCode 8)
|
|
22448
|
+
if ((e.key === "Delete" || e.key === "Backspace" || e.keyCode === 46 || e.keyCode === 8) && hasValue && !isDisabled) {
|
|
22449
|
+
e.preventDefault(); // 防止預設的刪除行為
|
|
22450
|
+
clearValue(); // 清除值
|
|
22451
|
+
}
|
|
22452
|
+
}, [
|
|
22453
|
+
hasValue,
|
|
22454
|
+
isDisabled,
|
|
22455
|
+
clearValue
|
|
22456
|
+
]);
|
|
22359
22457
|
useImperativeHandle(ref, function() {
|
|
22360
22458
|
return {
|
|
22361
22459
|
getInstance: function() {
|
|
@@ -22377,7 +22475,9 @@ var FlatpickrInput = /*#__PURE__*/ forwardRef(function(param, ref) {
|
|
|
22377
22475
|
// 初始化和清理
|
|
22378
22476
|
React__default.useEffect(function() {
|
|
22379
22477
|
initializeFlatpickr();
|
|
22380
|
-
}, [
|
|
22478
|
+
}, [
|
|
22479
|
+
initializeFlatpickr
|
|
22480
|
+
]);
|
|
22381
22481
|
// 當值變化時更新 flatpickr
|
|
22382
22482
|
React__default.useEffect(function() {
|
|
22383
22483
|
updateFlatpickr(value);
|
|
@@ -22398,13 +22498,14 @@ var FlatpickrInput = /*#__PURE__*/ forwardRef(function(param, ref) {
|
|
|
22398
22498
|
placeholder: (item === null || item === void 0 ? void 0 : item.placeholder) || "請選擇日期",
|
|
22399
22499
|
style: item === null || item === void 0 ? void 0 : item.style,
|
|
22400
22500
|
disabled: isDisabled,
|
|
22401
|
-
readOnly:
|
|
22501
|
+
readOnly: isDisabled,
|
|
22502
|
+
onKeyDown: handleKeyDown,
|
|
22402
22503
|
autoComplete: "off"
|
|
22403
22504
|
}),
|
|
22404
|
-
|
|
22405
|
-
className: "absolute right-3 top-1/2 transform -translate-y-1/2
|
|
22406
|
-
children: /*#__PURE__*/ jsx$1("span", {
|
|
22407
|
-
className: "w-5 h-5 text-[#B4B4B4]",
|
|
22505
|
+
/*#__PURE__*/ jsx$1("div", {
|
|
22506
|
+
className: "absolute right-3 top-1/2 transform -translate-y-1/2 flex items-center space-x-2",
|
|
22507
|
+
children: (item === null || item === void 0 ? void 0 : item.icon) && /*#__PURE__*/ jsx$1("span", {
|
|
22508
|
+
className: "w-5 h-5 text-[#B4B4B4] pointer-events-none",
|
|
22408
22509
|
children: /*#__PURE__*/ jsx$1(Icon, {
|
|
22409
22510
|
icon: item.icon || "solar:calendar-linear",
|
|
22410
22511
|
width: "1.5rem",
|
|
@@ -22418,6 +22519,8 @@ var FlatpickrInput = /*#__PURE__*/ forwardRef(function(param, ref) {
|
|
|
22418
22519
|
FlatpickrInput.displayName = "FlatpickrInput";
|
|
22419
22520
|
var FlatpickrField = function(param) {
|
|
22420
22521
|
var item = param.item;
|
|
22522
|
+
// 動態注入 flatpickr CSS,避免外部專案需要手動 import CSS
|
|
22523
|
+
useInjectGlobalCSS(FLATPICKR_CSS, "flatpickr-styles");
|
|
22421
22524
|
var _useFormContext = useFormContext(), control = _useFormContext.control, errors = _useFormContext.formState.errors;
|
|
22422
22525
|
var errorItem = errors[item.name];
|
|
22423
22526
|
return /*#__PURE__*/ jsxs("div", {
|
|
@@ -23411,4 +23514,4 @@ var BaseSwitch = /*#__PURE__*/ React.forwardRef(function(_param, ref) {
|
|
|
23411
23514
|
});
|
|
23412
23515
|
});
|
|
23413
23516
|
|
|
23414
|
-
export { BaseSwitch as B, City as C, FieldLabel as F, Row as R, Select as S, Textarea as T, SelectGroup as a, SelectValue as b, SelectTrigger as c, SelectContent as d, SelectLabel as e, SelectItem as f, SelectSeparator as g, SelectScrollUpButton as h, SelectScrollDownButton as i, Fields as j, CustomUploadField as k, Form as l, validateMsg as v };
|
|
23517
|
+
export { BaseSwitch as B, City as C, FieldLabel as F, Row as R, Select as S, Textarea as T, SelectGroup as a, SelectValue as b, SelectTrigger as c, SelectContent as d, SelectLabel as e, SelectItem as f, SelectSeparator as g, SelectScrollUpButton as h, SelectScrollDownButton as i, Fields as j, CustomUploadField as k, Form as l, useInjectGlobalCSS as u, validateMsg as v };
|