sellmate-design-system-react 0.8.3 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs +78 -2
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.js +78 -2
- package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
- package/dist/components/SChipInput/SChipInput.cjs +78 -2
- package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
- package/dist/components/SChipInput/SChipInput.js +78 -2
- package/dist/components/SChipInput/SChipInput.js.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.cjs +78 -2
- package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.js +78 -2
- package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs +78 -2
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.js +78 -2
- package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
- package/dist/components/SField/SField.cjs +78 -2
- package/dist/components/SField/SField.cjs.map +1 -1
- package/dist/components/SField/SField.js +78 -2
- package/dist/components/SField/SField.js.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.cjs +78 -2
- package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.js +78 -2
- package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
- package/dist/components/SInput/SInput.cjs +78 -2
- package/dist/components/SInput/SInput.cjs.map +1 -1
- package/dist/components/SInput/SInput.js +78 -2
- package/dist/components/SInput/SInput.js.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs +224 -118
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.js +224 -118
- package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.cjs +78 -2
- package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.js +78 -2
- package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
- package/dist/components/SSelect/SSelect.cjs +155 -49
- package/dist/components/SSelect/SSelect.cjs.map +1 -1
- package/dist/components/SSelect/SSelect.js +155 -49
- package/dist/components/SSelect/SSelect.js.map +1 -1
- package/dist/components/SSelect/select.config.d.ts +7 -0
- package/dist/components/STable/STable.cjs +155 -49
- package/dist/components/STable/STable.cjs.map +1 -1
- package/dist/components/STable/STable.js +155 -49
- package/dist/components/STable/STable.js.map +1 -1
- package/dist/components/STextarea/STextarea.cjs +78 -2
- package/dist/components/STextarea/STextarea.cjs.map +1 -1
- package/dist/components/STextarea/STextarea.js +78 -2
- package/dist/components/STextarea/STextarea.js.map +1 -1
- package/dist/components/STimePicker/STimePicker.cjs +78 -2
- package/dist/components/STimePicker/STimePicker.cjs.map +1 -1
- package/dist/components/STimePicker/STimePicker.js +78 -2
- package/dist/components/STimePicker/STimePicker.js.map +1 -1
- package/dist/components/STimeRangePicker/STimeRangePicker.cjs +78 -2
- package/dist/components/STimeRangePicker/STimeRangePicker.cjs.map +1 -1
- package/dist/components/STimeRangePicker/STimeRangePicker.js +78 -2
- package/dist/components/STimeRangePicker/STimeRangePicker.js.map +1 -1
- package/dist/components/STooltip/STooltip.cjs +78 -2
- package/dist/components/STooltip/STooltip.cjs.map +1 -1
- package/dist/components/STooltip/STooltip.d.ts +1 -1
- package/dist/components/STooltip/STooltip.js +78 -2
- package/dist/components/STooltip/STooltip.js.map +1 -1
- package/dist/index.cjs +155 -49
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +155 -49
- package/dist/index.js.map +1 -1
- package/dist/styles.css +4 -8
- package/package.json +1 -1
|
@@ -2902,6 +2902,75 @@ function usePortalContainer() {
|
|
|
2902
2902
|
return react.useContext(PortalContainerContext) ?? void 0;
|
|
2903
2903
|
}
|
|
2904
2904
|
|
|
2905
|
+
// src/lib/sanitize-inline-html.ts
|
|
2906
|
+
var ALLOWED_INLINE_TAGS = /* @__PURE__ */ new Set(["A", "B", "STRONG", "I", "EM", "BR", "SPAN"]);
|
|
2907
|
+
var ALLOWED_ATTRS_BY_TAG = {
|
|
2908
|
+
A: /* @__PURE__ */ new Set(["href", "target", "rel", "class"])
|
|
2909
|
+
};
|
|
2910
|
+
var COMMON_ALLOWED_ATTRS = /* @__PURE__ */ new Set(["class"]);
|
|
2911
|
+
var SAFE_HREF_RE = /^(https?:|mailto:|tel:|\/|#|\.)/i;
|
|
2912
|
+
var DROP_CONTENT_TAGS = /* @__PURE__ */ new Set([
|
|
2913
|
+
"SCRIPT",
|
|
2914
|
+
"STYLE",
|
|
2915
|
+
"IFRAME",
|
|
2916
|
+
"OBJECT",
|
|
2917
|
+
"EMBED",
|
|
2918
|
+
"META",
|
|
2919
|
+
"LINK",
|
|
2920
|
+
"BASE",
|
|
2921
|
+
"NOSCRIPT",
|
|
2922
|
+
// SVG/MATH 는 foreign-content 파싱 모드로 전환되어 재직렬화 시 다른 트리로
|
|
2923
|
+
// 재파싱될 수 있다(mXSS 벡터). 인라인 라벨에 필요 없으므로 통째로 제거한다.
|
|
2924
|
+
"SVG",
|
|
2925
|
+
"MATH",
|
|
2926
|
+
"TEMPLATE"
|
|
2927
|
+
]);
|
|
2928
|
+
var escapeHtml = (value) => value.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
2929
|
+
var sanitizeNode = (node) => {
|
|
2930
|
+
if (node.nodeType === Node.COMMENT_NODE) {
|
|
2931
|
+
node.remove();
|
|
2932
|
+
return;
|
|
2933
|
+
}
|
|
2934
|
+
if (node.nodeType !== Node.ELEMENT_NODE) return;
|
|
2935
|
+
const element = node;
|
|
2936
|
+
const tagName = element.tagName;
|
|
2937
|
+
if (DROP_CONTENT_TAGS.has(tagName)) {
|
|
2938
|
+
element.remove();
|
|
2939
|
+
return;
|
|
2940
|
+
}
|
|
2941
|
+
Array.from(element.childNodes).forEach((child) => sanitizeNode(child));
|
|
2942
|
+
if (ALLOWED_INLINE_TAGS.has(tagName)) {
|
|
2943
|
+
if (element.hasAttribute("className")) {
|
|
2944
|
+
const val = element.getAttribute("className");
|
|
2945
|
+
element.removeAttribute("className");
|
|
2946
|
+
if (!element.hasAttribute("class")) element.setAttribute("class", val);
|
|
2947
|
+
}
|
|
2948
|
+
const allowedAttrs = ALLOWED_ATTRS_BY_TAG[tagName] ?? COMMON_ALLOWED_ATTRS;
|
|
2949
|
+
Array.from(element.attributes).forEach((attr) => {
|
|
2950
|
+
if (!allowedAttrs.has(attr.name)) element.removeAttribute(attr.name);
|
|
2951
|
+
});
|
|
2952
|
+
if (tagName === "A") {
|
|
2953
|
+
const href = element.getAttribute("href");
|
|
2954
|
+
if (href !== null && href !== "" && !SAFE_HREF_RE.test(href)) element.removeAttribute("href");
|
|
2955
|
+
if (element.hasAttribute("target")) {
|
|
2956
|
+
element.setAttribute("rel", "noopener noreferrer");
|
|
2957
|
+
}
|
|
2958
|
+
}
|
|
2959
|
+
return;
|
|
2960
|
+
}
|
|
2961
|
+
const parent = element.parentNode;
|
|
2962
|
+
if (parent == null) return;
|
|
2963
|
+
while (element.firstChild) parent.insertBefore(element.firstChild, element);
|
|
2964
|
+
parent.removeChild(element);
|
|
2965
|
+
};
|
|
2966
|
+
var sanitizeInlineHtml = (value) => {
|
|
2967
|
+
if (typeof document === "undefined") return escapeHtml(value);
|
|
2968
|
+
const template = document.createElement("template");
|
|
2969
|
+
template.innerHTML = value;
|
|
2970
|
+
Array.from(template.content.childNodes).forEach((child) => sanitizeNode(child));
|
|
2971
|
+
return template.innerHTML;
|
|
2972
|
+
};
|
|
2973
|
+
|
|
2905
2974
|
// src/components/STag/tag.config.ts
|
|
2906
2975
|
var TAG_SIZE_CONFIG = {
|
|
2907
2976
|
xs: {
|
|
@@ -3100,7 +3169,14 @@ function useBody(content, message = []) {
|
|
|
3100
3169
|
if (content != null) return content;
|
|
3101
3170
|
if (message.length === 0) return null;
|
|
3102
3171
|
const singleLine = message.length === 1;
|
|
3103
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: message.map((line, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3172
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: message.map((line, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3173
|
+
"div",
|
|
3174
|
+
{
|
|
3175
|
+
className: singleLine ? "leading-[24px]" : void 0,
|
|
3176
|
+
dangerouslySetInnerHTML: { __html: sanitizeInlineHtml(line) }
|
|
3177
|
+
},
|
|
3178
|
+
i
|
|
3179
|
+
)) });
|
|
3104
3180
|
}
|
|
3105
3181
|
var STooltip = react.forwardRef(function STooltip2({
|
|
3106
3182
|
content,
|
|
@@ -3158,7 +3234,7 @@ var STooltip = react.forwardRef(function STooltip2({
|
|
|
3158
3234
|
if (disabled || body == null) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: triggerNode });
|
|
3159
3235
|
const isHover = trigger === "hover";
|
|
3160
3236
|
const contentClass = cn(
|
|
3161
|
-
"z-50
|
|
3237
|
+
"z-50 w-fit whitespace-nowrap rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
|
|
3162
3238
|
FLOATING_SLIDE_ANIM,
|
|
3163
3239
|
className
|
|
3164
3240
|
);
|