@teppen/react-ui 0.4.0 → 0.5.0

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.
Files changed (45) hide show
  1. package/README.md +38 -9
  2. package/dist/cjs/node_modules/react-icons/lia/index.js +2 -0
  3. package/dist/cjs/node_modules/react-icons/lia/index.js.map +1 -0
  4. package/dist/cjs/node_modules/react-icons/lib/iconBase.js +2 -0
  5. package/dist/cjs/node_modules/react-icons/lib/iconBase.js.map +1 -0
  6. package/dist/cjs/node_modules/react-icons/lib/iconContext.js +2 -0
  7. package/dist/cjs/node_modules/react-icons/lib/iconContext.js.map +1 -0
  8. package/dist/cjs/node_modules/react-icons/md/index.js +2 -0
  9. package/dist/cjs/node_modules/react-icons/md/index.js.map +1 -0
  10. package/dist/cjs/src/table/base.js +1 -1
  11. package/dist/cjs/src/table/cancel-icon.js +2 -0
  12. package/dist/cjs/src/table/cancel-icon.js.map +1 -0
  13. package/dist/cjs/src/table/cell.js +1 -1
  14. package/dist/cjs/src/table/cell.js.map +1 -1
  15. package/dist/cjs/src/table/edit-icon.js +2 -0
  16. package/dist/cjs/src/table/edit-icon.js.map +1 -0
  17. package/dist/cjs/src/table/filter-form.js +1 -1
  18. package/dist/cjs/src/table/filter-form.js.map +1 -1
  19. package/dist/cjs/src/table/filter-icon.js +1 -1
  20. package/dist/cjs/src/table/filter-icon.js.map +1 -1
  21. package/dist/cjs/src/table/header.js +1 -1
  22. package/dist/cjs/src/table/header.js.map +1 -1
  23. package/dist/esm/node_modules/react-icons/lia/index.js +2 -0
  24. package/dist/esm/node_modules/react-icons/lia/index.js.map +1 -0
  25. package/dist/esm/node_modules/react-icons/lib/iconBase.js +2 -0
  26. package/dist/esm/node_modules/react-icons/lib/iconBase.js.map +1 -0
  27. package/dist/esm/node_modules/react-icons/lib/iconContext.js +2 -0
  28. package/dist/esm/node_modules/react-icons/lib/iconContext.js.map +1 -0
  29. package/dist/esm/node_modules/react-icons/md/index.js +2 -0
  30. package/dist/esm/node_modules/react-icons/md/index.js.map +1 -0
  31. package/dist/esm/src/table/base.js +1 -1
  32. package/dist/esm/src/table/cancel-icon.js +2 -0
  33. package/dist/esm/src/table/cancel-icon.js.map +1 -0
  34. package/dist/esm/src/table/cell.js +1 -1
  35. package/dist/esm/src/table/cell.js.map +1 -1
  36. package/dist/esm/src/table/edit-icon.js +2 -0
  37. package/dist/esm/src/table/edit-icon.js.map +1 -0
  38. package/dist/esm/src/table/filter-form.js +1 -1
  39. package/dist/esm/src/table/filter-form.js.map +1 -1
  40. package/dist/esm/src/table/filter-icon.js +1 -1
  41. package/dist/esm/src/table/filter-icon.js.map +1 -1
  42. package/dist/esm/src/table/header.js +1 -1
  43. package/dist/esm/src/table/header.js.map +1 -1
  44. package/dist/index.d.ts +21 -3
  45. package/package.json +11 -3
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{__assign as e}from"../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as t,Fragment as l}from"react/jsx-runtime";import{useTable as o}from"./hook.js";import{TableCell as n}from"./cell.js";import{Sort as i}from"./sort.js";import{TableHeaderElement as c}from"./header.js";import{Pagenation as a}from"./page.js";import{TableFilterProvider as d,TableFilterRemoveButton as s,TableFilter as m}from"./filter.js";import{useState as u}from"react";import{TableFilterForm as f}from"./filter-form.js";function h(t){return r(d,{children:r(p,e({},t))})}function p(e){var d=o(e),h=d.cols,p=d.rows,v=d.rowCount,y=d.sortKey,b=d.sortOrder,g=d.page,k=g.count,N=g.current,j=g.from,x=g.to,C=g.next,w=g.prev,D=g.jump,O=u(!1),S=O[0],T=O[1];return t(l,{children:[r("div",{className:"flex justify-end",children:r(s,{children:"remove all filter"})}),r("div",{className:"relative w-full h-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:t("table",{className:"table table-auto w-full",children:[r("thead",{children:r("tr",{className:"sticky top-0 border-gray-200",children:h.map((function(e){return r(c,{label:e.label,columnType:e.type,sortConponent:r(i,{onClick:e.onClick,isSortedByThis:y===e.key,sortOrder:b}),filterComponent:r(m,{keyName:e.key,onClick:function(e){e.preventDefault(),T((function(e){return!e}))}})},e.key)}))})}),t("tbody",{children:[S&&r("tr",{children:r("td",{colSpan:h.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl p-2",children:t("div",{className:"relative",children:[r("div",{className:"absolute top-0 right-0",children:r("button",{onClick:function(e){e.preventDefault(),T(!1)},children:"close"})}),r("div",{children:r(f,{cols:h})})]})})}),0===p.length&&r("tr",{children:r("td",{colSpan:h.length,className:"py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),p.map((function(e){var t;return r("tr",{className:"border border-gray-200 hover:bg-gray-100 ".concat((null===(t=p[0])||void 0===t?void 0:t.onClick)?"hover:cursor-pointer":""),onClick:e.onClick,"data-testid":e.id,children:h.map((function(t){return r(n,{children:e[t.key]},t.key)}))},e.id)}))]})]})}),t("div",{className:"mt-1",children:[t("p",{className:"text-center text-sm text-gray-600",children:[j+1," - ",x<v?x:v," of ",v]}),r("div",{className:"mt-2",children:r(a,{count:k,current:N,jump:D,next:C,prev:w})})]})]})}export{h as default};
2
+ import{__assign as e}from"../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as t,Fragment as o}from"react/jsx-runtime";import{useTable as l}from"./hook.js";import{TableCell as n}from"./cell.js";import{Sort as i}from"./sort.js";import{TableHeaderElement as c}from"./header.js";import{Pagenation as a}from"./page.js";import{TableFilterProvider as d,TableFilterRemoveButton as s,TableFilter as m}from"./filter.js";import{useState as u}from"react";import{TableFilterForm as f}from"./filter-form.js";function h(t){return r(d,{children:r(p,e({},t))})}function p(d){var h=l(d),p=h.cols,v=h.rows,y=h.rowCount,b=h.sortKey,g=h.sortOrder,k=h.page,N=k.count,j=k.current,x=k.from,C=k.to,w=k.next,D=k.prev,O=k.jump,S=u(!1),T=S[0],z=S[1];return t(o,{children:[r("div",{className:"flex justify-end",children:r(s,{children:"remove all filter"})}),r("div",{className:"relative w-full h-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:t("table",{className:"table table-auto w-full",children:[r("thead",{children:r("tr",{className:"sticky top-0 border-gray-200 z-20",children:p.map((function(e){return r(c,{label:e.label,columnType:e.type,sortConponent:r(i,{onClick:e.onClick,isSortedByThis:b===e.key,sortOrder:g}),filterComponent:r(m,{keyName:e.key,onClick:function(e){e.preventDefault(),z((function(e){return!e}))}})},e.key)}))})}),t("tbody",{children:[T&&r("tr",{children:r("td",{colSpan:p.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl p-2 z-20",children:t("div",{className:"relative",children:[r("div",{className:"absolute top-0 right-0",children:r("button",{onClick:function(e){e.preventDefault(),z(!1)},children:"close"})}),r("div",{children:r(f,{cols:p})})]})})}),0===v.length&&r("tr",{children:r("td",{colSpan:p.length,className:"py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),v.map((function(t){var o;return r("tr",{className:"border border-gray-200 hover:bg-gray-100 ".concat((null===(o=v[0])||void 0===o?void 0:o.onClick)?"hover:cursor-pointer":""),onClick:t.onClick,"data-testid":t.id,children:p.map((function(o){return r(n,e({},o,{columnKey:o.key,currentRecord:t,children:t[o.key]}))}))},t.id)}))]})]})}),t("div",{className:"mt-1",children:[t("p",{className:"text-center text-sm text-gray-600",children:[x+1," - ",C<y?C:y," of ",y]}),r("div",{className:"mt-2",children:r(a,{count:N,current:j,jump:O,next:w,prev:D})})]})]})}export{h as default};
3
3
  //# sourceMappingURL=base.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{MdOutlineCancel as o}from"../../node_modules/react-icons/md/index.js";function r(r){return e(o,{size:"".concat(r.size,"px")})}export{r as CancelIcon};
2
+ //# sourceMappingURL=cancel-icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel-icon.js","sources":["../../../../src/table/cancel-icon.tsx"],"sourcesContent":["import { MdOutlineCancel } from \"react-icons/md\";\n\ntype TPropsCancelIcon = {\n size: number;\n};\n\nexport function CancelIcon(props: TPropsCancelIcon) {\n return <MdOutlineCancel size={`${props.size}px`} />;\n}\n"],"names":["CancelIcon","props","_jsx","MdOutlineCancel","size","concat"],"mappings":"qHAMM,SAAUA,EAAWC,GACzB,OAAOC,EAACC,EAAe,CAACC,KAAM,GAAGC,OAAAJ,EAAMG,KAAQ,OACjD"}
@@ -1,2 +1,2 @@
1
- import{jsx as t}from"react/jsx-runtime";function e(e){return t("td",{children:t("div",{className:"p-2 w-fit text-left cursor-default",onClick:function(t){t.preventDefault(),t.stopPropagation()},children:e.children})})}export{e as TableCell};
1
+ import{jsxs as e,jsx as n}from"react/jsx-runtime";import{forwardRef as t,useState as r,memo as o,useRef as i,useCallback as l,useEffect as c}from"react";import{EditIcon as u}from"./edit-icon.js";import{CancelIcon as a}from"./cancel-icon.js";var s=t((function(t,r){return e("div",{className:"flex justify-between gap-1 w-full items-center",children:[n("input",{ref:r,className:"w-full py-1 px-2",type:"text",value:t.value,onChange:t.onChange,onBlur:t.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(t.reset(),t.endEditing())}}),n("button",{onMouseDown:function(e){e.preventDefault(),t.reset(),t.endEditing()},children:n(a,{size:16})})]})})),d=t((function(e,t){var o=r(e.currentRecord[e.columnKey]),i=o[0],l=o[1];return n(s,{ref:t,value:i,onChange:function(e){e.preventDefault(),l(e.target.value)},onBlur:function(n){if(n.preventDefault(),i!==e.currentRecord[e.columnKey])if(e.onCellBlur){if(!function(){var n,t,r;return(null===(n=e.constraints)||void 0===n?void 0:n.maxLength)&&i.length>e.constraints.maxLength?(alert("over max length"),!1):(null===(t=e.constraints)||void 0===t?void 0:t.minLength)&&i.length<e.constraints.minLength?(alert("under min length"),!1):!((null===(r=e.constraints)||void 0===r?void 0:r.pattern)&&!new RegExp(e.constraints.pattern).test(i)&&(alert("not match pattern"),1))}())return void setTimeout((function(){n.target.focus()}),100);e.onCellBlur(e.columnKey,i,e.currentRecord,e.compEditing)}else l(e.currentRecord[e.columnKey]),e.compEditing();else e.compEditing()},reset:function(){return l(e.currentRecord[e.columnKey])},endEditing:e.compEditing})})),f=t((function(e,t){var o=r(e.currentRecord[e.columnKey].toString()),i=o[0],l=o[1];return n(s,{ref:t,value:i,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?l(e.target.value):isNaN(Number(e.target.value))||l(e.target.value):l("-0"):l("0")},onBlur:function(n){if(n.preventDefault(),Number(i)!==e.currentRecord[e.columnKey])if(e.onCellBlur){if(!function(){var n,t,r=parseInt(i);return(null===(n=e.constraints)||void 0===n?void 0:n.max)&&r>e.constraints.max?(alert("over max"),!1):!((null===(t=e.constraints)||void 0===t?void 0:t.min)&&r<e.constraints.min&&(alert("under min"),1))}())return void setTimeout((function(){n.target.focus()}),100);e.onCellBlur(e.columnKey,Number(i),e.currentRecord,e.compEditing)}else l(e.currentRecord[e.columnKey].toString()),e.compEditing();else e.compEditing()},reset:function(){return l(e.currentRecord[e.columnKey].toString())},endEditing:e.compEditing})})),m=o((function(t){var o=r(!1),a=o[0],s=o[1],m=i(null),p=l((function(){s(!1)}),[s]);return c((function(){var e;a&&(null===(e=m.current)||void 0===e||e.focus())}),[a]),n("td",{children:e("div",{className:"relative",children:[e("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default ".concat(a?"opacity-0":""),onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[n("div",{onDoubleClick:function(e){e.preventDefault(),t.editable&&s(!0)},children:n("p",{className:"text-left",children:t.children})}),t.editable&&n("button",{className:"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200",onClick:function(e){e.preventDefault(),t.editable&&s(!0)},children:n(u,{size:12})})]}),a&&e("div",{className:"absolute top-0 left-0 w-full h-full grid place-items-center z-10 pr-2",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:["string"===t.type&&n(d,{ref:m,columnKey:t.columnKey,currentRecord:t.currentRecord,compEditing:p,type:"string",onCellBlur:t.onCellBlur,constraints:t.constraints}),"number"===t.type&&n(f,{ref:m,columnKey:t.columnKey,currentRecord:t.currentRecord,compEditing:p,type:"number",onCellBlur:t.onCellBlur,constraints:t.constraints})]})]})})}));export{m as TableCell};
2
2
  //# sourceMappingURL=cell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cell.js","sources":["../../../../src/table/cell.tsx"],"sourcesContent":["type TPropsCell = {\n children: React.ReactNode;\n};\n\nexport function TableCell(props: TPropsCell) {\n return (\n <td>\n <div\n className={\"p-2 w-fit text-left cursor-default\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {props.children}\n </div>\n </td>\n );\n}\n"],"names":["TableCell","props","_jsx","children","className","onClick","e","preventDefault","stopPropagation"],"mappings":"wCAIM,SAAUA,EAAUC,GACxB,OACEC,EACE,KAAA,CAAAC,SAAAD,EAAA,MAAA,CACEE,UAAW,qCACXC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACH,WAEAP,EAAME,YAIf"}
1
+ {"version":3,"file":"cell.js","sources":["../../../../src/table/cell.tsx"],"sourcesContent":["import {\n memo,\n useEffect,\n useRef,\n useState,\n forwardRef,\n useCallback,\n} from \"react\";\nimport {\n DataObject,\n TCellEditingCondition,\n TNumberCellEditingCondition,\n TStringCellEditingCondition,\n} from \"./type\";\nimport { EditIcon } from \"./edit-icon\";\nimport { CancelIcon } from \"./cancel-icon\";\n\ntype TPropsCell = {\n currentRecord: DataObject;\n columnKey: string;\n children: string | number;\n} & TCellEditingCondition;\n\nconst CellInput = forwardRef(function CI<T extends string | number>(\n props: {\n value: T;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;\n reset: () => void;\n endEditing: () => void;\n },\n ref: React.ForwardedRef<HTMLInputElement>\n) {\n return (\n <div className=\"flex justify-between gap-1 w-full items-center\">\n <input\n ref={ref}\n className=\"w-full py-1 px-2\"\n type=\"text\"\n value={props.value}\n onChange={props.onChange}\n onBlur={props.onBlur}\n onKeyUp={(e: React.KeyboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n if (e.key === \"Enter\") {\n (e.target as HTMLInputElement).blur();\n } else if (e.key === \"Escape\") {\n props.reset();\n props.endEditing();\n }\n }}\n />\n <button\n onMouseDown={(e) => {\n e.preventDefault();\n props.reset();\n props.endEditing();\n }}\n >\n <CancelIcon size={16} />\n </button>\n </div>\n );\n});\n\nconst StringCellInput = forwardRef(function SI(\n props: {\n columnKey: string;\n currentRecord: DataObject;\n compEditing: () => void;\n } & TStringCellEditingCondition,\n ref: React.ForwardedRef<HTMLInputElement>\n) {\n const [value, setValue] = useState(\n props.currentRecord[props.columnKey] as string\n );\n\n const validate = () => {\n if (props.constraints?.maxLength) {\n if (value.length > props.constraints.maxLength) {\n alert(\"over max length\");\n return false;\n }\n }\n if (props.constraints?.minLength) {\n if (value.length < props.constraints.minLength) {\n alert(\"under min length\");\n return false;\n }\n }\n if (props.constraints?.pattern) {\n if (!new RegExp(props.constraints.pattern).test(value)) {\n alert(\"not match pattern\");\n return false;\n }\n }\n return true;\n };\n\n return (\n <CellInput\n ref={ref}\n value={value}\n onChange={(e) => {\n e.preventDefault();\n setValue(e.target.value);\n }}\n onBlur={(e) => {\n e.preventDefault();\n\n if (value === props.currentRecord[props.columnKey]) {\n props.compEditing();\n return;\n }\n\n if (props.onCellBlur) {\n if (!validate()) {\n setTimeout(() => {\n e.target.focus();\n }, 100);\n return;\n }\n\n props.onCellBlur(\n props.columnKey,\n value,\n props.currentRecord,\n props.compEditing\n );\n } else {\n setValue(props.currentRecord[props.columnKey]);\n props.compEditing();\n }\n }}\n reset={() => setValue(props.currentRecord[props.columnKey])}\n endEditing={props.compEditing}\n />\n );\n});\n\nconst NumberCellInput = forwardRef(function SI(\n props: {\n columnKey: string;\n currentRecord: DataObject;\n compEditing: () => void;\n } & TNumberCellEditingCondition,\n ref: React.ForwardedRef<HTMLInputElement>\n) {\n const [value, setValue] = useState(\n (props.currentRecord[props.columnKey] as number).toString()\n );\n\n const validate = () => {\n const v = parseInt(value);\n\n if (props.constraints?.max) {\n if (v > props.constraints.max) {\n alert(\"over max\");\n return false;\n }\n }\n\n if (props.constraints?.min) {\n if (v < props.constraints.min) {\n alert(\"under min\");\n return false;\n }\n }\n\n return true;\n };\n\n return (\n <CellInput\n ref={ref}\n value={value}\n onChange={(e) => {\n e.preventDefault();\n\n if (e.target.value === \"\") {\n setValue(\"0\");\n return;\n }\n\n if (e.target.value === \"-\") {\n setValue(\"-0\");\n return;\n }\n\n if (e.target.value.match(/^-?[0-9]+\\.$/)) {\n setValue(e.target.value);\n return;\n }\n\n if (isNaN(Number(e.target.value))) {\n return;\n }\n\n setValue(e.target.value);\n }}\n onBlur={(e) => {\n e.preventDefault();\n\n if (Number(value) === props.currentRecord[props.columnKey]) {\n props.compEditing();\n return;\n }\n\n if (props.onCellBlur) {\n if (!validate()) {\n setTimeout(() => {\n e.target.focus();\n }, 100);\n return;\n }\n\n props.onCellBlur(\n props.columnKey,\n Number(value),\n props.currentRecord,\n props.compEditing\n );\n } else {\n setValue((props.currentRecord[props.columnKey] as number).toString());\n props.compEditing();\n }\n }}\n reset={() =>\n setValue((props.currentRecord[props.columnKey] as number).toString())\n }\n endEditing={props.compEditing}\n />\n );\n});\n\nexport const TableCell = memo(function TC(props: TPropsCell) {\n const [isEditing, setIsEditing] = useState(false);\n const ref = useRef<HTMLInputElement>(null);\n\n const compEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n useEffect(() => {\n if (isEditing) {\n ref.current?.focus();\n }\n }, [isEditing]);\n\n return (\n <td>\n <div className=\"relative\">\n <div\n className={`flex items-center gap-3 w-fit p-2 cursor-default ${\n isEditing ? \"opacity-0\" : \"\"\n }`}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <div\n onDoubleClick={(e) => {\n e.preventDefault();\n if (props.editable) {\n setIsEditing(true);\n }\n }}\n >\n <p className=\"text-left\">{props.children}</p>\n </div>\n {props.editable && (\n <button\n className=\"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200\"\n onClick={(e) => {\n e.preventDefault();\n if (props.editable) {\n setIsEditing(true);\n }\n }}\n >\n <EditIcon size={12} />\n </button>\n )}\n </div>\n {isEditing && (\n <div\n className=\"absolute top-0 left-0 w-full h-full grid place-items-center z-10 pr-2\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {props.type === \"string\" && (\n <StringCellInput\n ref={ref}\n columnKey={props.columnKey}\n currentRecord={props.currentRecord}\n compEditing={compEditing}\n type={\"string\"}\n onCellBlur={props.onCellBlur}\n constraints={props.constraints}\n />\n )}\n {props.type === \"number\" && (\n <NumberCellInput\n ref={ref}\n columnKey={props.columnKey}\n currentRecord={props.currentRecord}\n compEditing={compEditing}\n type={\"number\"}\n onCellBlur={props.onCellBlur}\n constraints={props.constraints}\n />\n )}\n </div>\n )}\n </div>\n </td>\n );\n});\n"],"names":["CellInput","forwardRef","props","ref","_jsxs","className","children","_jsx","type","value","onChange","onBlur","onKeyUp","e","preventDefault","key","target","blur","reset","endEditing","onMouseDown","CancelIcon","size","StringCellInput","_a","useState","currentRecord","columnKey","setValue","onCellBlur","constraints","maxLength","length","alert","_b","minLength","_c","pattern","RegExp","test","validate","setTimeout","focus","compEditing","NumberCellInput","toString","match","isNaN","Number","v","parseInt","max","min","TableCell","memo","isEditing","setIsEditing","useRef","useCallback","useEffect","current","concat","onClick","stopPropagation","onDoubleClick","editable","EditIcon"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{LiaEdit as o}from"../../node_modules/react-icons/lia/index.js";function r(r){return e(o,{size:"".concat(r.size,"px")})}export{r as EditIcon};
2
+ //# sourceMappingURL=edit-icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-icon.js","sources":["../../../../src/table/edit-icon.tsx"],"sourcesContent":["import { LiaEdit } from \"react-icons/lia\";\n\ntype TPropsEditIcon = {\n size: number;\n};\n\nexport function EditIcon(props: TPropsEditIcon) {\n return <LiaEdit size={`${props.size}px`} />;\n}\n"],"names":["EditIcon","props","_jsx","LiaEdit","size","concat"],"mappings":"8GAMM,SAAUA,EAASC,GACvB,OAAOC,EAACC,EAAO,CAACC,KAAM,GAAGC,OAAAJ,EAAMG,KAAQ,OACzC"}
@@ -1,2 +1,2 @@
1
- import{jsxs as e,Fragment as l,jsx as n}from"react/jsx-runtime";import{useState as t}from"react";import{useTableFilterContext as r,STRING_FILTER_OPERATOR as i,NUMBER_FILTER_OPERATOR as a,FILTER_OPERATOR as o,TableFilterRemoveButton as c}from"./filter.js";function u(u){var d=r(),f=d.addFilter,p=d.removeFilter,v=d.filterConditions,s=t(""),h=s[0],m=s[1],g=t(""),y=g[0],x=g[1],b=t(""),k=b[0],N=b[1],C=t("string"),j=C[0],D=C[1];return e(l,{children:[e("div",{className:"flex flex-col gap-2",children:[n("p",{className:"font-bold text-lg",children:"フィルタ追加"}),e("div",{className:"flex flex-wrap gap-1",children:[e("select",{value:h,onChange:function(e){var l;e.preventDefault(),m(e.target.value);var n=null===(l=u.cols.find((function(l){return l.key===e.target.value})))||void 0===l?void 0:l.type;D(n)},children:[n("option",{value:"",children:"-- 列を選択 --"}),u.cols.filter((function(e){return!!e.label&&!!e.type})).map((function(e){return n("option",{value:e.key,children:e.label})}))]}),e("select",{value:y,onChange:function(e){e.preventDefault(),x(e.target.value)},disabled:!h,children:[n("option",{value:"",children:h?"-- 条件を選択 --":"-- 列を選択してください --"}),"string"===j&&i.map((function(e){return n("option",{value:e.key,children:e.label})})),"number"===j&&a.map((function(e){return n("option",{value:e.key,children:e.label})}))]}),n("input",{type:"text",value:k,onChange:function(e){e.preventDefault(),N(e.target.value)},placeholder:"-- 値を入力 --"})]}),n("div",{className:"flex justify-end",children:n("button",{className:"bg-gray-900 text-white py-1 px-2 rounded-md",onClick:function(e){e.preventDefault(),h&&y&&k?f({key:h,operator:y,value:[k]}):alert("全ての項目を入力してください")},children:"追加"})})]}),e("div",{children:[v.length>0&&n("p",{className:"font-bold text-lg",children:"フィルタ一覧"}),n("ul",{className:"flex flex-col gap-1 my-2",children:v.map((function(l){var t,r;return e("li",{className:"flex justify-between",children:[e("p",{children:["「",n("strong",{children:null===(t=u.cols.find((function(e){return e.key===l.key})))||void 0===t?void 0:t.label}),"」 は",n("span",{children:null===(r=o.find((function(e){return e.key===l.operator})))||void 0===r?void 0:r.label}),":",n("span",{children:l.value})]}),n("button",{onClick:function(e){e.preventDefault(),p(l.id)},children:"×"})]},l.id)}))}),n("div",{className:"flex justify-center",children:n(c,{children:"remove all filter"})})]})]})}export{u as TableFilterForm};
1
+ import{jsxs as e,Fragment as l,jsx as n}from"react/jsx-runtime";import{useState as t}from"react";import{useTableFilterContext as r,STRING_FILTER_OPERATOR as i,NUMBER_FILTER_OPERATOR as a,FILTER_OPERATOR as o,TableFilterRemoveButton as c}from"./filter.js";import{CancelIcon as u}from"./cancel-icon.js";function d(d){var f=r(),p=f.addFilter,s=f.removeFilter,v=f.filterConditions,h=t(""),m=h[0],y=h[1],g=t(""),x=g[0],b=g[1],k=t(""),N=k[0],j=k[1],C=t("string"),D=C[0],w=C[1];return e(l,{children:[e("div",{className:"flex flex-col gap-2",children:[n("p",{className:"font-bold text-lg",children:"フィルタ追加"}),e("div",{className:"flex flex-wrap gap-1",children:[e("select",{value:m,onChange:function(e){var l;e.preventDefault(),y(e.target.value);var n=null===(l=d.cols.find((function(l){return l.key===e.target.value})))||void 0===l?void 0:l.type;w(n)},children:[n("option",{value:"",children:"-- 列を選択 --"}),d.cols.filter((function(e){return!!e.label&&!!e.type})).map((function(e){return n("option",{value:e.key,children:e.label},e.key)}))]}),e("select",{value:x,onChange:function(e){e.preventDefault(),b(e.target.value)},disabled:!m,children:[n("option",{value:"",children:m?"-- 条件を選択 --":"-- 列を選択してください --"}),"string"===D&&i.map((function(e){return n("option",{value:e.key,children:e.label},e.key)})),"number"===D&&a.map((function(e){return n("option",{value:e.key,children:e.label},e.key)}))]}),n("input",{type:"text",value:N,onChange:function(e){e.preventDefault(),j(e.target.value)},placeholder:"-- 値を入力 --"})]}),n("div",{className:"flex justify-end",children:n("button",{className:"bg-gray-900 text-white py-1 px-2 rounded-md",onClick:function(e){e.preventDefault(),m&&x&&N?p({key:m,operator:x,value:[N]}):alert("全ての項目を入力してください")},children:"追加"})})]}),e("div",{children:[v.length>0&&n("p",{className:"font-bold text-lg",children:"フィルタ一覧"}),n("ul",{className:"flex flex-col gap-1 my-2",children:v.map((function(l){var t,r;return e("li",{className:"flex justify-between",children:[e("p",{children:["「",n("strong",{children:null===(t=d.cols.find((function(e){return e.key===l.key})))||void 0===t?void 0:t.label}),"」 は",n("span",{children:null===(r=o.find((function(e){return e.key===l.operator})))||void 0===r?void 0:r.label}),":",n("span",{children:l.value})]}),n("button",{onClick:function(e){e.preventDefault(),s(l.id)},children:n(u,{size:16})})]},l.id)}))}),n("div",{className:"flex justify-center",children:n(c,{children:"remove all filter"})})]})]})}export{d as TableFilterForm};
2
2
  //# sourceMappingURL=filter-form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-form.js","sources":["../../../../src/table/filter-form.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport {\n FILTER_OPERATOR,\n NUMBER_FILTER_OPERATOR,\n STRING_FILTER_OPERATOR,\n TStringFilterOperator,\n TableFilterRemoveButton,\n useTableFilterContext,\n} from \"./filter\";\nimport { TColumnType, TTableColumn } from \"./type\";\n\ntype TPropsFilterForm = {\n cols: TTableColumn[];\n};\n\nexport function TableFilterForm(props: TPropsFilterForm) {\n const { addFilter, removeFilter, filterConditions } = useTableFilterContext();\n const [selectingKey, setSelectingKey] = useState<string>(\"\");\n const [selectingOperator, setSelectingOperator] = useState<string>(\"\");\n const [value, setValue] = useState<string>(\"\");\n const [filterType, setFilterType] = useState<TColumnType>(\"string\");\n\n return (\n <>\n <div className=\"flex flex-col gap-2\">\n <p className=\"font-bold text-lg\">フィルタ追加</p>\n <div className=\"flex flex-wrap gap-1\">\n <select\n value={selectingKey}\n onChange={(e) => {\n e.preventDefault();\n setSelectingKey(e.target.value);\n const columnType = props.cols.find(\n (col) => col.key === e.target.value\n )?.type as TColumnType;\n setFilterType(columnType);\n }}\n >\n <option value=\"\">-- 列を選択 --</option>\n {props.cols\n .filter((col) => !!col.label && !!col.type)\n .map((col) => (\n <option value={col.key}>{col.label}</option>\n ))}\n </select>\n <select\n value={selectingOperator}\n onChange={(e) => {\n e.preventDefault();\n setSelectingOperator(e.target.value);\n }}\n disabled={!selectingKey}\n >\n <option value=\"\">\n {selectingKey ? \"-- 条件を選択 --\" : \"-- 列を選択してください --\"}\n </option>\n {filterType === \"string\" &&\n STRING_FILTER_OPERATOR.map((op) => (\n <option value={op.key}>{op.label}</option>\n ))}\n {filterType === \"number\" &&\n NUMBER_FILTER_OPERATOR.map((op) => (\n <option value={op.key}>{op.label}</option>\n ))}\n </select>\n <input\n type=\"text\"\n value={value}\n onChange={(e) => {\n e.preventDefault();\n setValue(e.target.value);\n }}\n placeholder=\"-- 値を入力 --\"\n />\n </div>\n <div className=\"flex justify-end\">\n <button\n className=\"bg-gray-900 text-white py-1 px-2 rounded-md\"\n onClick={(e) => {\n e.preventDefault();\n if (!selectingKey || !selectingOperator || !value) {\n alert(\"全ての項目を入力してください\");\n return;\n }\n addFilter({\n key: selectingKey,\n operator: selectingOperator as TStringFilterOperator,\n value: [value],\n });\n }}\n >\n 追加\n </button>\n </div>\n </div>\n <div>\n {filterConditions.length > 0 && (\n <p className=\"font-bold text-lg\">フィルタ一覧</p>\n )}\n <ul className=\"flex flex-col gap-1 my-2\">\n {filterConditions.map((f) => (\n <li key={f.id} className=\"flex justify-between\">\n <p>\n 「\n <strong>\n {props.cols.find((col) => col.key === f.key)?.label}\n </strong>\n 」 は\n <span>\n {FILTER_OPERATOR.find((op) => op.key === f.operator)?.label}\n </span>\n :<span>{f.value}</span>\n </p>\n <button\n onClick={(e) => {\n e.preventDefault();\n removeFilter(f.id);\n }}\n >\n ×\n </button>\n </li>\n ))}\n </ul>\n <div className=\"flex justify-center\">\n <TableFilterRemoveButton>remove all filter</TableFilterRemoveButton>\n </div>\n </div>\n </>\n );\n}\n"],"names":["TableFilterForm","props","_a","useTableFilterContext","addFilter","removeFilter","filterConditions","_b","useState","selectingKey","setSelectingKey","_c","selectingOperator","setSelectingOperator","_d","value","setValue","_e","filterType","setFilterType","_jsxs","_Fragment","children","className","_jsx","onChange","e","preventDefault","target","columnType","cols","find","col","key","type","filter","label","map","disabled","STRING_FILTER_OPERATOR","op","NUMBER_FILTER_OPERATOR","placeholder","onClick","operator","alert","length","f","FILTER_OPERATOR","id","TableFilterRemoveButton"],"mappings":"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"}
1
+ {"version":3,"file":"filter-form.js","sources":["../../../../src/table/filter-form.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport {\n FILTER_OPERATOR,\n NUMBER_FILTER_OPERATOR,\n STRING_FILTER_OPERATOR,\n TStringFilterOperator,\n TableFilterRemoveButton,\n useTableFilterContext,\n} from \"./filter\";\nimport { TColumnType, TTableColumn } from \"./type\";\nimport { CancelIcon } from \"./cancel-icon\";\n\ntype TPropsFilterForm = {\n cols: TTableColumn[];\n};\n\nexport function TableFilterForm(props: TPropsFilterForm) {\n const { addFilter, removeFilter, filterConditions } = useTableFilterContext();\n const [selectingKey, setSelectingKey] = useState<string>(\"\");\n const [selectingOperator, setSelectingOperator] = useState<string>(\"\");\n const [value, setValue] = useState<string>(\"\");\n const [filterType, setFilterType] = useState<TColumnType>(\"string\");\n\n return (\n <>\n <div className=\"flex flex-col gap-2\">\n <p className=\"font-bold text-lg\">フィルタ追加</p>\n <div className=\"flex flex-wrap gap-1\">\n <select\n value={selectingKey}\n onChange={(e) => {\n e.preventDefault();\n setSelectingKey(e.target.value);\n const columnType = props.cols.find(\n (col) => col.key === e.target.value\n )?.type as TColumnType;\n setFilterType(columnType);\n }}\n >\n <option value=\"\">-- 列を選択 --</option>\n {props.cols\n .filter((col) => !!col.label && !!col.type)\n .map((col) => (\n <option key={col.key} value={col.key}>\n {col.label}\n </option>\n ))}\n </select>\n <select\n value={selectingOperator}\n onChange={(e) => {\n e.preventDefault();\n setSelectingOperator(e.target.value);\n }}\n disabled={!selectingKey}\n >\n <option value=\"\">\n {selectingKey ? \"-- 条件を選択 --\" : \"-- 列を選択してください --\"}\n </option>\n {filterType === \"string\" &&\n STRING_FILTER_OPERATOR.map((op) => (\n <option key={op.key} value={op.key}>\n {op.label}\n </option>\n ))}\n {filterType === \"number\" &&\n NUMBER_FILTER_OPERATOR.map((op) => (\n <option key={op.key} value={op.key}>\n {op.label}\n </option>\n ))}\n </select>\n <input\n type=\"text\"\n value={value}\n onChange={(e) => {\n e.preventDefault();\n setValue(e.target.value);\n }}\n placeholder=\"-- 値を入力 --\"\n />\n </div>\n <div className=\"flex justify-end\">\n <button\n className=\"bg-gray-900 text-white py-1 px-2 rounded-md\"\n onClick={(e) => {\n e.preventDefault();\n if (!selectingKey || !selectingOperator || !value) {\n alert(\"全ての項目を入力してください\");\n return;\n }\n addFilter({\n key: selectingKey,\n operator: selectingOperator as TStringFilterOperator,\n value: [value],\n });\n }}\n >\n 追加\n </button>\n </div>\n </div>\n <div>\n {filterConditions.length > 0 && (\n <p className=\"font-bold text-lg\">フィルタ一覧</p>\n )}\n <ul className=\"flex flex-col gap-1 my-2\">\n {filterConditions.map((f) => (\n <li key={f.id} className=\"flex justify-between\">\n <p>\n 「\n <strong>\n {props.cols.find((col) => col.key === f.key)?.label}\n </strong>\n 」 は\n <span>\n {FILTER_OPERATOR.find((op) => op.key === f.operator)?.label}\n </span>\n :<span>{f.value}</span>\n </p>\n <button\n onClick={(e) => {\n e.preventDefault();\n removeFilter(f.id);\n }}\n >\n <CancelIcon size={16} />\n </button>\n </li>\n ))}\n </ul>\n <div className=\"flex justify-center\">\n <TableFilterRemoveButton>remove all filter</TableFilterRemoveButton>\n </div>\n </div>\n </>\n );\n}\n"],"names":["TableFilterForm","props","_a","useTableFilterContext","addFilter","removeFilter","filterConditions","_b","useState","selectingKey","setSelectingKey","_c","selectingOperator","setSelectingOperator","_d","value","setValue","_e","filterType","setFilterType","_jsxs","_Fragment","children","className","_jsx","onChange","e","preventDefault","target","columnType","cols","find","col","key","type","filter","label","map","disabled","STRING_FILTER_OPERATOR","op","NUMBER_FILTER_OPERATOR","placeholder","onClick","operator","alert","length","f","FILTER_OPERATOR","id","CancelIcon","size","TableFilterRemoveButton"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";function r(r){var o,i=null!==(o=r.size)&&void 0!==o?o:16;return e("div",{className:"duration-300 ".concat(r.isFilterActive?"text-gray-700":"text-gray-500"),children:t("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",version:"1.1",width:"".concat(i,"px"),height:"".concat(i,"px"),viewBox:"0 0 256 256",xmlSpace:"preserve",children:[e("defs",{}),r.isFilterActive?e("g",{style:{stroke:"none",strokeWidth:0,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"none",fillRule:"nonzero",opacity:1},transform:"translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)",children:e("path",{d:"M 52.537 80.466 V 45.192 L 84.53 2.999 C 85.464 1.768 84.586 0 83.041 0 H 6.959 C 5.414 0 4.536 1.768 5.47 2.999 l 31.994 42.192 v 43.441 c 0 1.064 1.163 1.719 2.073 1.167 l 11.758 -7.127 C 52.065 82.205 52.537 81.368 52.537 80.466 z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"currentColor",fillRule:"nonzero",opacity:1},transform:" matrix(1 0 0 1 0 0) ","stroke-linecap":"round"})}):e("g",{style:{stroke:"none",strokeWidth:0,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"none",fillRule:"nonzero",opacity:1},transform:"translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)",children:e("path",{d:"M 37.882 90 c -0.338 0 -0.676 -0.086 -0.981 -0.258 c -0.629 -0.354 -1.019 -1.02 -1.019 -1.742 V 45.354 L 3.923 3.208 C 3.464 2.604 3.388 1.791 3.726 1.11 S 4.758 0 5.517 0 h 78.966 c 0.76 0 1.453 0.43 1.791 1.11 s 0.262 1.493 -0.197 2.098 L 54.118 45.354 V 79.37 c 0 0.699 -0.365 1.348 -0.963 1.71 l -14.237 8.63 C 38.601 89.903 38.241 90 37.882 90 z M 9.543 4 l 29.932 39.474 c 0.264 0.348 0.406 0.772 0.406 1.208 v 39.767 l 10.236 -6.205 V 44.682 c 0 -0.437 0.143 -0.861 0.406 -1.208 L 80.457 4 H 9.543 z M 52.118 79.37 h 0.01 H 52.118 z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"currentColor",fillRule:"nonzero",opacity:1},transform:" matrix(1 0 0 1 0 0) ","stroke-linecap":"round"})})]})})}export{r as FIlterIcon};
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";function r(r){var o,i=null!==(o=r.size)&&void 0!==o?o:16;return e("div",{className:"duration-300 ".concat(r.isFilterActive?"text-gray-700":"text-gray-500"),children:t("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",version:"1.1",width:"".concat(i,"px"),height:"".concat(i,"px"),viewBox:"0 0 256 256",xmlSpace:"preserve",children:[e("defs",{}),r.isFilterActive?e("g",{style:{stroke:"none",strokeWidth:0,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"none",fillRule:"nonzero",opacity:1},transform:"translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)",children:e("path",{d:"M 52.537 80.466 V 45.192 L 84.53 2.999 C 85.464 1.768 84.586 0 83.041 0 H 6.959 C 5.414 0 4.536 1.768 5.47 2.999 l 31.994 42.192 v 43.441 c 0 1.064 1.163 1.719 2.073 1.167 l 11.758 -7.127 C 52.065 82.205 52.537 81.368 52.537 80.466 z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"currentColor",fillRule:"nonzero",opacity:1},transform:" matrix(1 0 0 1 0 0) ",strokeLinecap:"round"})}):e("g",{style:{stroke:"none",strokeWidth:0,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"none",fillRule:"nonzero",opacity:1},transform:"translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)",children:e("path",{d:"M 37.882 90 c -0.338 0 -0.676 -0.086 -0.981 -0.258 c -0.629 -0.354 -1.019 -1.02 -1.019 -1.742 V 45.354 L 3.923 3.208 C 3.464 2.604 3.388 1.791 3.726 1.11 S 4.758 0 5.517 0 h 78.966 c 0.76 0 1.453 0.43 1.791 1.11 s 0.262 1.493 -0.197 2.098 L 54.118 45.354 V 79.37 c 0 0.699 -0.365 1.348 -0.963 1.71 l -14.237 8.63 C 38.601 89.903 38.241 90 37.882 90 z M 9.543 4 l 29.932 39.474 c 0.264 0.348 0.406 0.772 0.406 1.208 v 39.767 l 10.236 -6.205 V 44.682 c 0 -0.437 0.143 -0.861 0.406 -1.208 L 80.457 4 H 9.543 z M 52.118 79.37 h 0.01 H 52.118 z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"currentColor",fillRule:"nonzero",opacity:1},transform:" matrix(1 0 0 1 0 0) ",strokeLinecap:"round"})})]})})}export{r as FIlterIcon};
2
2
  //# sourceMappingURL=filter-icon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-icon.js","sources":["../../../../src/table/filter-icon.tsx"],"sourcesContent":["type TPropsFIlterIcon = {\n size?: number;\n isFilterActive?: boolean;\n};\n\nexport function FIlterIcon(props: TPropsFIlterIcon) {\n const size = props.size ?? 16;\n return (\n <div\n className={`duration-300 ${\n props.isFilterActive ? \"text-gray-700\" : \"text-gray-500\"\n }`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n width={`${size}px`}\n height={`${size}px`}\n viewBox=\"0 0 256 256\"\n xmlSpace=\"preserve\"\n >\n <defs></defs>\n {props.isFilterActive ? (\n <g\n style={{\n stroke: \"none\",\n strokeWidth: 0,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"none\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\"translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)\"\n >\n <path\n d=\"M 52.537 80.466 V 45.192 L 84.53 2.999 C 85.464 1.768 84.586 0 83.041 0 H 6.959 C 5.414 0 4.536 1.768 5.47 2.999 l 31.994 42.192 v 43.441 c 0 1.064 1.163 1.719 2.073 1.167 l 11.758 -7.127 C 52.065 82.205 52.537 81.368 52.537 80.466 z\"\n style={{\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\" matrix(1 0 0 1 0 0) \"\n stroke-linecap=\"round\"\n />\n </g>\n ) : (\n <g\n style={{\n stroke: \"none\",\n strokeWidth: 0,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"none\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\"translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)\"\n >\n <path\n d=\"M 37.882 90 c -0.338 0 -0.676 -0.086 -0.981 -0.258 c -0.629 -0.354 -1.019 -1.02 -1.019 -1.742 V 45.354 L 3.923 3.208 C 3.464 2.604 3.388 1.791 3.726 1.11 S 4.758 0 5.517 0 h 78.966 c 0.76 0 1.453 0.43 1.791 1.11 s 0.262 1.493 -0.197 2.098 L 54.118 45.354 V 79.37 c 0 0.699 -0.365 1.348 -0.963 1.71 l -14.237 8.63 C 38.601 89.903 38.241 90 37.882 90 z M 9.543 4 l 29.932 39.474 c 0.264 0.348 0.406 0.772 0.406 1.208 v 39.767 l 10.236 -6.205 V 44.682 c 0 -0.437 0.143 -0.861 0.406 -1.208 L 80.457 4 H 9.543 z M 52.118 79.37 h 0.01 H 52.118 z\"\n style={{\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\" matrix(1 0 0 1 0 0) \"\n stroke-linecap=\"round\"\n />\n </g>\n )}\n </svg>\n </div>\n );\n}\n"],"names":["FIlterIcon","props","size","_a","_jsx","className","concat","isFilterActive","children","_jsxs","xmlns","xmlnsXlink","version","width","height","viewBox","xmlSpace","style","stroke","strokeWidth","strokeDasharray","strokeLinecap","strokeLinejoin","strokeMiterlimit","fill","fillRule","opacity","transform","d"],"mappings":"kDAKM,SAAUA,EAAWC,SACnBC,EAAiB,QAAVC,EAAAF,EAAMC,YAAI,IAAAC,EAAAA,EAAI,GAC3B,OACEC,EAAA,MAAA,CACEC,UAAW,gBACTC,OAAAL,EAAMM,eAAiB,gBAAkB,iBACzCC,SAEFC,EACE,MAAA,CAAAC,MAAM,6BACNC,WAAW,+BACXC,QAAQ,MACRC,MAAO,GAAGP,OAAAJ,EAAQ,MAClBY,OAAQ,GAAGR,OAAAJ,EAAQ,MACnBa,QAAQ,cACRC,SAAS,WAAUR,SAAA,CAEnBJ,EAAa,OAAA,IACZH,EAAMM,eACLH,EAAA,IAAA,CACEa,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,OACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,oEAEVnB,SAAAJ,EAAA,OAAA,CACEwB,EAAE,4OACFX,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,eACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,wBAAuB,iBAClB,YAInBvB,EAAA,IAAA,CACEa,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,OACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,oEAEVnB,SAAAJ,EAAA,OAAA,CACEwB,EAAE,8hBACFX,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,eACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,wBACK,iBAAA,gBAO7B"}
1
+ {"version":3,"file":"filter-icon.js","sources":["../../../../src/table/filter-icon.tsx"],"sourcesContent":["type TPropsFIlterIcon = {\n size?: number;\n isFilterActive?: boolean;\n};\n\nexport function FIlterIcon(props: TPropsFIlterIcon) {\n const size = props.size ?? 16;\n return (\n <div\n className={`duration-300 ${\n props.isFilterActive ? \"text-gray-700\" : \"text-gray-500\"\n }`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n width={`${size}px`}\n height={`${size}px`}\n viewBox=\"0 0 256 256\"\n xmlSpace=\"preserve\"\n >\n <defs></defs>\n {props.isFilterActive ? (\n <g\n style={{\n stroke: \"none\",\n strokeWidth: 0,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"none\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\"translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)\"\n >\n <path\n d=\"M 52.537 80.466 V 45.192 L 84.53 2.999 C 85.464 1.768 84.586 0 83.041 0 H 6.959 C 5.414 0 4.536 1.768 5.47 2.999 l 31.994 42.192 v 43.441 c 0 1.064 1.163 1.719 2.073 1.167 l 11.758 -7.127 C 52.065 82.205 52.537 81.368 52.537 80.466 z\"\n style={{\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\" matrix(1 0 0 1 0 0) \"\n strokeLinecap=\"round\"\n />\n </g>\n ) : (\n <g\n style={{\n stroke: \"none\",\n strokeWidth: 0,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"none\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\"translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)\"\n >\n <path\n d=\"M 37.882 90 c -0.338 0 -0.676 -0.086 -0.981 -0.258 c -0.629 -0.354 -1.019 -1.02 -1.019 -1.742 V 45.354 L 3.923 3.208 C 3.464 2.604 3.388 1.791 3.726 1.11 S 4.758 0 5.517 0 h 78.966 c 0.76 0 1.453 0.43 1.791 1.11 s 0.262 1.493 -0.197 2.098 L 54.118 45.354 V 79.37 c 0 0.699 -0.365 1.348 -0.963 1.71 l -14.237 8.63 C 38.601 89.903 38.241 90 37.882 90 z M 9.543 4 l 29.932 39.474 c 0.264 0.348 0.406 0.772 0.406 1.208 v 39.767 l 10.236 -6.205 V 44.682 c 0 -0.437 0.143 -0.861 0.406 -1.208 L 80.457 4 H 9.543 z M 52.118 79.37 h 0.01 H 52.118 z\"\n style={{\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\" matrix(1 0 0 1 0 0) \"\n strokeLinecap=\"round\"\n />\n </g>\n )}\n </svg>\n </div>\n );\n}\n"],"names":["FIlterIcon","props","size","_a","_jsx","className","concat","isFilterActive","children","_jsxs","xmlns","xmlnsXlink","version","width","height","viewBox","xmlSpace","style","stroke","strokeWidth","strokeDasharray","strokeLinecap","strokeLinejoin","strokeMiterlimit","fill","fillRule","opacity","transform","d"],"mappings":"kDAKM,SAAUA,EAAWC,SACnBC,EAAiB,QAAVC,EAAAF,EAAMC,YAAI,IAAAC,EAAAA,EAAI,GAC3B,OACEC,EAAA,MAAA,CACEC,UAAW,gBACTC,OAAAL,EAAMM,eAAiB,gBAAkB,iBACzCC,SAEFC,EACE,MAAA,CAAAC,MAAM,6BACNC,WAAW,+BACXC,QAAQ,MACRC,MAAO,GAAGP,OAAAJ,EAAQ,MAClBY,OAAQ,GAAGR,OAAAJ,EAAQ,MACnBa,QAAQ,cACRC,SAAS,WAAUR,SAAA,CAEnBJ,EAAa,OAAA,IACZH,EAAMM,eACLH,EAAA,IAAA,CACEa,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,OACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,oEAEVnB,SAAAJ,EAAA,OAAA,CACEwB,EAAE,4OACFX,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,eACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,wBACVN,cAAc,YAIlBjB,EAAA,IAAA,CACEa,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,OACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,oEAEVnB,SAAAJ,EAAA,OAAA,CACEwB,EAAE,8hBACFX,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,eACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,wBACVN,cAAc,gBAO5B"}
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";function l(l){return e("th",{className:"relative bg-gray-200 text-gray-600 h-[32px]",children:[t("div",{className:"px-2",children:t("p",{className:"text-left font-bold text-nowrap overflow-hidden text-ellipsis w-[90%]",children:l.label})}),l.label&&l.columnType&&e("div",{className:"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2",children:[l.filterComponent&&l.filterComponent,l.sortConponent&&l.sortConponent]})]})}export{l as TableHeaderElement};
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";function n(n){return e("th",{className:"relative bg-gray-200 text-gray-600 h-[32px]",children:[t("div",{className:"px-2",children:t("p",{className:"text-left font-bold text-nowrap overflow-hidden text-ellipsis w-[80%] min-w-20",children:n.label})}),n.label&&n.columnType&&e("div",{className:"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2",children:[n.filterComponent&&n.filterComponent,n.sortConponent&&n.sortConponent]})]})}export{n as TableHeaderElement};
2
2
  //# sourceMappingURL=header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.js","sources":["../../../../src/table/header.tsx"],"sourcesContent":["type TPropsTableHeader = {\n label?: string;\n columnType?: string;\n sortConponent?: JSX.Element;\n filterComponent?: JSX.Element;\n};\n\nexport function TableHeaderElement(props: TPropsTableHeader) {\n return (\n <th className={`relative bg-gray-200 text-gray-600 h-[32px]`}>\n <div className=\"px-2\">\n <p className=\"text-left font-bold text-nowrap overflow-hidden text-ellipsis w-[90%]\">\n {props.label}\n </p>\n </div>\n\n {props.label && props.columnType && (\n <div className=\"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2\">\n {props.filterComponent && props.filterComponent}\n {props.sortConponent && props.sortConponent}\n </div>\n )}\n </th>\n );\n}\n"],"names":["TableHeaderElement","props","_jsxs","className","_jsx","children","label","columnType","filterComponent","sortConponent"],"mappings":"kDAOM,SAAUA,EAAmBC,GACjC,OACEC,EAAI,KAAA,CAAAC,UAAW,wDACbC,EAAK,MAAA,CAAAD,UAAU,OACbE,SAAAD,EAAA,IAAA,CAAGD,UAAU,wEACVE,SAAAJ,EAAMK,UAIVL,EAAMK,OAASL,EAAMM,YACpBL,EAAA,MAAA,CAAKC,UAAU,oEAAmEE,SAAA,CAC/EJ,EAAMO,iBAAmBP,EAAMO,gBAC/BP,EAAMQ,eAAiBR,EAAMQ,mBAKxC"}
1
+ {"version":3,"file":"header.js","sources":["../../../../src/table/header.tsx"],"sourcesContent":["type TPropsTableHeader = {\n label?: string;\n columnType?: string;\n sortConponent?: JSX.Element;\n filterComponent?: JSX.Element;\n};\n\nexport function TableHeaderElement(props: TPropsTableHeader) {\n return (\n <th className={`relative bg-gray-200 text-gray-600 h-[32px]`}>\n <div className=\"px-2\">\n <p className=\"text-left font-bold text-nowrap overflow-hidden text-ellipsis w-[80%] min-w-20\">\n {props.label}\n </p>\n </div>\n\n {props.label && props.columnType && (\n <div className=\"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2\">\n {props.filterComponent && props.filterComponent}\n {props.sortConponent && props.sortConponent}\n </div>\n )}\n </th>\n );\n}\n"],"names":["TableHeaderElement","props","_jsxs","className","_jsx","children","label","columnType","filterComponent","sortConponent"],"mappings":"kDAOM,SAAUA,EAAmBC,GACjC,OACEC,EAAI,KAAA,CAAAC,UAAW,wDACbC,EAAK,MAAA,CAAAD,UAAU,OACbE,SAAAD,EAAA,IAAA,CAAGD,UAAU,iFACVE,SAAAJ,EAAMK,UAIVL,EAAMK,OAASL,EAAMM,YACpBL,EAAA,MAAA,CAAKC,UAAU,oEAAmEE,SAAA,CAC/EJ,EAAMO,iBAAmBP,EAAMO,gBAC/BP,EAAMQ,eAAiBR,EAAMQ,mBAKxC"}
package/dist/index.d.ts CHANGED
@@ -5,12 +5,30 @@ type DataObject = {
5
5
  id: number | string;
6
6
  onClick?: React.MouseEventHandler<HTMLTableRowElement>;
7
7
  };
8
- type TColumnType = "string" | "number";
8
+ type TStringCellEditingCondition = {
9
+ type: "string";
10
+ editable?: boolean;
11
+ onCellBlur?: (key: string, value: string, current: DataObject, completeEditing: () => void) => void;
12
+ constraints?: {
13
+ maxLength?: number;
14
+ minLength?: number;
15
+ pattern?: string;
16
+ };
17
+ };
18
+ type TNumberCellEditingCondition = {
19
+ type: "number";
20
+ editable?: boolean;
21
+ onCellBlur?: (key: string, value: number, current: DataObject, completeEditing: () => void) => void;
22
+ constraints?: {
23
+ max?: number;
24
+ min?: number;
25
+ };
26
+ };
27
+ type TCellEditingCondition = TStringCellEditingCondition | TNumberCellEditingCondition;
9
28
  type TTableColumn = {
10
29
  key: string;
11
30
  label?: string;
12
- type?: TColumnType;
13
- };
31
+ } & TCellEditingCondition;
14
32
  type TPropsTable<T extends DataObject> = {
15
33
  cols: TTableColumn[];
16
34
  rows: T[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",
@@ -40,6 +40,7 @@
40
40
  "jest": "^29.7.0",
41
41
  "jest-environment-jsdom": "^29.7.0",
42
42
  "postcss": "^8.4.35",
43
+ "react-icons": "^5.0.1",
43
44
  "rimraf": "^5.0.5",
44
45
  "rollup": "^4.12.0",
45
46
  "rollup-plugin-dts": "^6.1.0",
@@ -47,9 +48,9 @@
47
48
  "rollup-plugin-postcss": "^4.0.2",
48
49
  "rollup-plugin-preserve-directives": "^0.4.0",
49
50
  "storybook": "^7.6.17",
51
+ "tailwind-variants": "^0.2.0",
50
52
  "tailwindcss": "^3.4.1",
51
53
  "tslib": "^2.6.2",
52
- "tailwind-variants": "^0.2.0",
53
54
  "typescript": "^5.3.3"
54
55
  },
55
56
  "peerDependencies": {
@@ -65,5 +66,12 @@
65
66
  ],
66
67
  "publishConfig": {
67
68
  "registry": "https://registry.npmjs.org/"
68
- }
69
+ },
70
+ "keywords": [
71
+ "react",
72
+ "tailwindcss",
73
+ "front-end",
74
+ "ui",
75
+ "table"
76
+ ]
69
77
  }