@teppen/react-ui 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -9
- package/dist/cjs/node_modules/react-icons/lia/index.js +2 -0
- package/dist/cjs/node_modules/react-icons/lia/index.js.map +1 -0
- package/dist/cjs/node_modules/react-icons/lib/iconBase.js +2 -0
- package/dist/cjs/node_modules/react-icons/lib/iconBase.js.map +1 -0
- package/dist/cjs/node_modules/react-icons/lib/iconContext.js +2 -0
- package/dist/cjs/node_modules/react-icons/lib/iconContext.js.map +1 -0
- package/dist/cjs/node_modules/react-icons/md/index.js +2 -0
- package/dist/cjs/node_modules/react-icons/md/index.js.map +1 -0
- package/dist/cjs/src/table/base.js +1 -1
- package/dist/cjs/src/table/cancel-icon.js +2 -0
- package/dist/cjs/src/table/cancel-icon.js.map +1 -0
- package/dist/cjs/src/table/cell.js +1 -1
- package/dist/cjs/src/table/cell.js.map +1 -1
- package/dist/cjs/src/table/edit-icon.js +2 -0
- package/dist/cjs/src/table/edit-icon.js.map +1 -0
- package/dist/cjs/src/table/filter-form.js +1 -1
- package/dist/cjs/src/table/filter-form.js.map +1 -1
- package/dist/cjs/src/table/filter-icon.js +1 -1
- package/dist/cjs/src/table/filter-icon.js.map +1 -1
- package/dist/cjs/src/table/filter.js.map +1 -1
- package/dist/cjs/src/table/header.js +1 -1
- package/dist/cjs/src/table/header.js.map +1 -1
- package/dist/esm/node_modules/react-icons/lia/index.js +2 -0
- package/dist/esm/node_modules/react-icons/lia/index.js.map +1 -0
- package/dist/esm/node_modules/react-icons/lib/iconBase.js +2 -0
- package/dist/esm/node_modules/react-icons/lib/iconBase.js.map +1 -0
- package/dist/esm/node_modules/react-icons/lib/iconContext.js +2 -0
- package/dist/esm/node_modules/react-icons/lib/iconContext.js.map +1 -0
- package/dist/esm/node_modules/react-icons/md/index.js +2 -0
- package/dist/esm/node_modules/react-icons/md/index.js.map +1 -0
- package/dist/esm/src/table/base.js +1 -1
- package/dist/esm/src/table/cancel-icon.js +2 -0
- package/dist/esm/src/table/cancel-icon.js.map +1 -0
- package/dist/esm/src/table/cell.js +1 -1
- package/dist/esm/src/table/cell.js.map +1 -1
- package/dist/esm/src/table/edit-icon.js +2 -0
- package/dist/esm/src/table/edit-icon.js.map +1 -0
- package/dist/esm/src/table/filter-form.js +1 -1
- package/dist/esm/src/table/filter-form.js.map +1 -1
- package/dist/esm/src/table/filter-icon.js +1 -1
- package/dist/esm/src/table/filter-icon.js.map +1 -1
- package/dist/esm/src/table/filter.js.map +1 -1
- package/dist/esm/src/table/header.js +1 -1
- package/dist/esm/src/table/header.js.map +1 -1
- package/dist/index.d.ts +21 -3
- 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
|
|
2
|
+
import{__assign as e}from"../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as t}from"react/jsx-runtime";import{useTable as l}from"./hook.js";import{TableCell as o}from"./cell.js";import{Sort as n}from"./sort.js";import{TableHeaderElement as i}from"./header.js";import{Pagenation as c}from"./page.js";import{TableFilterProvider as a,TableFilterRemoveButton as d,TableFilter as s}from"./filter.js";import{useState as m}from"react";import{TableFilterForm as u}from"./filter-form.js";function f(t){return r(a,{children:r(h,e({},t))})}function h(a){var f=l(a),h=f.cols,p=f.rows,v=f.rowCount,y=f.sortKey,b=f.sortOrder,N=f.page,g=N.count,k=N.current,x=N.from,j=N.to,C=N.next,w=N.prev,D=N.jump,O=m(!1),S=O[0],T=O[1];return t("div",{className:"w-full",children:[r("div",{className:"flex justify-end",children:r(d,{children:"remove all filters"})}),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:h.map((function(e){return r(i,{label:e.label,columnType:e.type,sortConponent:r(n,{onClick:e.onClick,isSortedByThis:y===e.key,sortOrder:b}),filterComponent:r(s,{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 py-5 px-2 z-20",children:r("div",{className:"container max-w-[768px] mx-auto",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(u,{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(t){var l;return r("tr",{className:"border border-gray-200 hover:bg-gray-100 ".concat((null===(l=p[0])||void 0===l?void 0:l.onClick)?"hover:cursor-pointer":""),onClick:t.onClick,"data-testid":t.id,children:h.map((function(l){return r(o,e({},l,{columnKey:l.key,currentRecord:t,children:t[l.key]}))}))},t.id)}))]})]})}),t("div",{className:"mt-1",children:[t("p",{className:"text-center text-sm text-gray-600",children:[x+1," - ",j<v?j:v," of ",v]}),r("div",{className:"mt-2",children:r(c,{count:g,current:k,jump:D,next:C,prev:w})})]})]})}export{f as default};
|
|
3
3
|
//# sourceMappingURL=base.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
|
|
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 @@
|
|
|
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
|
|
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(),s=f.addFilter,p=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 mb-5",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?s("string"===D?{key:m,operator:x,value:[N]}:{key:m,operator:x,value:Number(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(),p(l.id)},children:n(u,{size:16})})]},l.id)}))}),n("div",{className:"flex justify-center",children:n(c,{children:n("p",{className:"text-gray-600 underline hover:text-gray-800",children:"remove all filters"})})})]})]})}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}
|
|
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 TNumberFilterOperator,\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 mb-5\">\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 filterType === \"string\"\n ? {\n key: selectingKey,\n operator: selectingOperator as TStringFilterOperator,\n value: [value],\n }\n : {\n key: selectingKey,\n operator: selectingOperator as TNumberFilterOperator,\n value: Number(value),\n }\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>\n <p className=\"text-gray-600 underline hover:text-gray-800\">\n remove all filters\n </p>\n </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","Number","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) ",
|
|
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
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sources":["../../../../src/table/filter.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useReducer } from \"react\";\nimport { DataObject } from \"./type\";\nimport { FIlterIcon } from \"./filter-icon\";\n\nexport const STRING_FILTER_OPERATOR = [\n { key: \"includeText\", label: \"次の値を含む\" },\n] as const;\n\nexport const NUMBER_FILTER_OPERATOR = [\n { key: \"eq\", label: \"次の値と等しい\" },\n { key: \"ne\", label: \"次の値と等しくない\" },\n { key: \"gt\", label: \"次の値より大きい\" },\n { key: \"lt\", label: \"次の値より小さい\" },\n { key: \"gte\", label: \"次の値以上\" },\n { key: \"lte\", label: \"次の値以下\" },\n] as const;\n\nexport const FILTER_OPERATOR = [\n ...STRING_FILTER_OPERATOR,\n ...NUMBER_FILTER_OPERATOR,\n] as const;\n\nexport type TStringFilterOperator =\n (typeof STRING_FILTER_OPERATOR)[number][\"key\"];\nexport type TNumberFilterOperator =\n (typeof NUMBER_FILTER_OPERATOR)[number][\"key\"];\nexport type TFilterOperator = TStringFilterOperator | TNumberFilterOperator;\n\ntype TStringFilter = {\n key: string;\n operator: TStringFilterOperator;\n value: string[];\n};\n\ntype TNumberFilter = {\n key: string;\n operator:
|
|
1
|
+
{"version":3,"file":"filter.js","sources":["../../../../src/table/filter.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useReducer } from \"react\";\nimport { DataObject } from \"./type\";\nimport { FIlterIcon } from \"./filter-icon\";\n\nexport const STRING_FILTER_OPERATOR = [\n { key: \"includeText\", label: \"次の値を含む\" },\n] as const;\n\nexport const NUMBER_FILTER_OPERATOR = [\n { key: \"eq\", label: \"次の値と等しい\" },\n { key: \"ne\", label: \"次の値と等しくない\" },\n { key: \"gt\", label: \"次の値より大きい\" },\n { key: \"lt\", label: \"次の値より小さい\" },\n { key: \"gte\", label: \"次の値以上\" },\n { key: \"lte\", label: \"次の値以下\" },\n] as const;\n\nexport const FILTER_OPERATOR = [\n ...STRING_FILTER_OPERATOR,\n ...NUMBER_FILTER_OPERATOR,\n] as const;\n\nexport type TStringFilterOperator =\n (typeof STRING_FILTER_OPERATOR)[number][\"key\"];\nexport type TNumberFilterOperator =\n (typeof NUMBER_FILTER_OPERATOR)[number][\"key\"];\nexport type TFilterOperator = TStringFilterOperator | TNumberFilterOperator;\n\ntype TStringFilter = {\n key: string;\n operator: TStringFilterOperator;\n value: string[];\n};\n\ntype TNumberFilter = {\n key: string;\n operator: TNumberFilterOperator;\n value: number;\n};\n\ntype TFilter = TStringFilter | TNumberFilter;\n\ntype TFilterState = {\n filters: ({ id: number } & TFilter)[];\n};\n\ntype TFilterAction =\n | { type: \"add\"; payload: { filter: TFilter } }\n | { type: \"remove\"; payload: { id: number } }\n | { type: \"clear\" };\n\nexport function filterReducer(\n state: TFilterState,\n action: TFilterAction\n): TFilterState {\n switch (action.type) {\n case \"add\":\n return {\n filters: [\n ...state.filters,\n { id: new Date().getTime(), ...action.payload.filter },\n ],\n };\n case \"remove\":\n return {\n filters: state.filters.filter((f) => f.id !== action.payload.id),\n };\n case \"clear\":\n return { filters: [] };\n }\n}\n\nfunction useFilterReducer() {\n const [state, dispatch] = useReducer(filterReducer, { filters: [] });\n\n const addFilter = useCallback(\n (filter: TFilter) => dispatch({ type: \"add\", payload: { filter } }),\n [dispatch]\n );\n const removeFilter = useCallback(\n (id: number) => dispatch({ type: \"remove\", payload: { id } }),\n [dispatch]\n );\n const clearFilter = useCallback(\n () => dispatch({ type: \"clear\" }),\n [dispatch]\n );\n\n const filter = useCallback(\n (rows: DataObject[]): DataObject[] => {\n return state.filters.reduce((acc, filter) => {\n switch (filter.operator) {\n case \"includeText\":\n return acc.filter((row) => {\n const value = row[filter.key];\n if (typeof value === \"string\") {\n return filter.value.some((v) => value.includes(v));\n }\n return false;\n });\n case \"eq\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"ne\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n case \"gt\":\n return acc.filter((row) => row[filter.key] > filter.value);\n case \"lt\":\n return acc.filter((row) => row[filter.key] < filter.value);\n case \"gte\":\n return acc.filter((row) => row[filter.key] >= filter.value);\n case \"lte\":\n return acc.filter((row) => row[filter.key] <= filter.value);\n }\n }, rows);\n },\n [state]\n );\n\n return {\n addFilter,\n removeFilter,\n clearFilter,\n filter,\n filterConditions: state.filters,\n };\n}\n\nconst TableFilterContext = createContext<ReturnType<typeof useFilterReducer>>({\n addFilter: () => {},\n removeFilter: () => {},\n clearFilter: () => {},\n filter: () => [],\n filterConditions: [],\n});\n\nexport function TableFilterProvider({\n children,\n}: {\n children: JSX.Element | JSX.Element[];\n}) {\n return (\n <TableFilterContext.Provider value={useFilterReducer()}>\n {children}\n </TableFilterContext.Provider>\n );\n}\n\nexport function useTableFilterContext() {\n return useContext(TableFilterContext);\n}\n\ntype TPropsTableFilter = {\n keyName: string;\n onClick: React.MouseEventHandler<HTMLDivElement>;\n};\n\nexport function TableFilter(props: TPropsTableFilter) {\n const { filterConditions } = useTableFilterContext();\n\n return (\n <div className=\"relative cursor-pointer\" onClick={props.onClick}>\n <FIlterIcon\n isFilterActive={\n filterConditions.filter((f) => f.key === props.keyName).length > 0\n }\n />\n </div>\n );\n}\n\nexport function TableFilterRemoveButton({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const { clearFilter, filterConditions } = useTableFilterContext();\n\n if (filterConditions.length === 0) {\n return;\n }\n\n return (\n <button\n onClick={(e) => {\n e.preventDefault();\n clearFilter();\n }}\n >\n {children}\n </button>\n );\n}\n"],"names":["STRING_FILTER_OPERATOR","key","label","NUMBER_FILTER_OPERATOR","FILTER_OPERATOR","__spreadArray","filterReducer","state","action","type","filters","__assign","id","Date","getTime","payload","filter","f","useFilterReducer","_a","useReducer","dispatch","addFilter","useCallback","removeFilter","clearFilter","rows","reduce","acc","operator","row","value","some","v","includes","filterConditions","TableFilterContext","createContext","TableFilterProvider","children","_jsx","Provider","useTableFilterContext","useContext","TableFilter","props","className","onClick","FIlterIcon","isFilterActive","keyName","length","TableFilterRemoveButton","_b","e","preventDefault"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";function
|
|
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-[
|
|
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
|
|
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
|
-
|
|
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.
|
|
3
|
+
"version": "0.5.1",
|
|
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
|
}
|