@bizhermit/react-sdk
Version:
React SDK
1 lines • 2.38 kB
JavaScript
;var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importDefault(require("react")),radio_buttons_1=require("../../inputs/radio-buttons"),jsx_style_1=__importDefault(require("../../../styles/jsx-style")),css_var_1=require("../../../styles/css-var"),dom_1=require("../../../utils/dom"),cn="bh-lv_c-rdb",ListViewRadioButtonColumn=e=>{const t=e.selectedValue??!0,l=e.unselectedValue??null;return{width:-1,sort:!1,resize:!1,cellTextAlign:"center",...e,bindedItems:n=>{let a=!1;n.forEach((n=>{a?n[e.name]=l:n[e.name]===t&&(a=!0)})),e.disabled||!a&&n.length>0&&(n[0][e.name]=t)},initialize:()=>{const t=document.createElement("div");return t.classList.add(cn,radio_buttons_1.radioButtonCn),e.disabled?(t.setAttribute("data-m","d"),t.setAttribute("data-disabled",String(!0===e.disabled))):t.setAttribute("data-m","e"),{elem:t}},cellInitialize:(e,t)=>{e.element.classList.add(`${cn}-cell`);const l=(0,dom_1.cloneDomElement)(t.elem);e.contentElements.push(l),e.element.appendChild(l)},cellRender:({contentElements:e,row:l,column:n,cache:a})=>{const r=l.item.data[n.name]===t;a[n.name]!==r&&e[0].setAttribute("data-selected",String(a[n.name]=r))},clickCell:e.selectRowClick||e.disabled?e.clickCell:(n,a)=>{if(e.clickCell)return e.clickCell(n,a);let r;for(const a of n.originItems())a[e.name]===t&&(r=a),a[e.name]=l;return n.data[e.name]=t,e.endedEdit?.({before:r,after:n.data},{columnName:n.columnName,data:n.data,index:n.rowNumber-1,id:n.id},!0),{renderHeaderCell:!0,renderFooterCell:!0}},clickRow:e.selectRowClick&&!e.disabled?(n,a)=>{if(e.clickRow)return e.clickRow(n,a);let r;for(const a of n.originItems())a[e.name]===t&&(r=a),a[e.name]=l;return n.data[e.name]=t,e.endedEdit?.({before:r,after:n.data},{columnName:n.columnName,data:n.data,index:n.rowNumber-1,id:n.id},!0),{renderHeaderCells:!0,renderFooterCells:!0}}:e.clickRow,jsxStyle:react_1.default.createElement(react_1.default.Fragment,null,radio_buttons_1.RadioButtonStyle,Style)}},Style=react_1.default.createElement(jsx_style_1.default,{id:cn},(()=>`\n.${cn}-cell[data-disabled="false"] {\n cursor: pointer;\n}\n.${cn}-cell[data-disabled="true"] > .${cn} {\n ${css_var_1.CssPV.inactOpacity}\n}\n.${cn}-cell > .${cn}::after {\n transition: unset;\n}\n`));exports.default=ListViewRadioButtonColumn;