1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/src/elements/CheckBoxElement.tsx

91 lines
2.3 KiB
TypeScript
Raw Normal View History

2022-06-29 02:17:10 +03:00
import escapeHTML from 'escape-html';
2024-06-02 20:58:11 +03:00
import React, { type FC } from 'react';
2024-08-15 02:33:50 -04:00
import globalize from 'lib/globalize';
2022-06-29 02:17:10 +03:00
2024-06-02 20:58:11 +03:00
const createCheckBoxElement = ({
labelClassName,
className,
id,
dataFilter,
dataItemType,
dataId,
checkedAttribute,
renderContent
}: {
labelClassName?: string;
type?: string;
className?: string;
id?: string;
dataFilter?: string;
dataItemType?: string;
dataId?: string;
checkedAttribute?: string;
renderContent?: string;
}) => ({
2022-06-29 02:17:10 +03:00
__html: `<label ${labelClassName}>
<input
is="emby-checkbox"
type="checkbox"
class="${className}"
${id}
${dataFilter}
${dataItemType}
${dataId}
${checkedAttribute}
/>
${renderContent}
</label>`
});
2024-06-02 20:58:11 +03:00
interface CheckBoxElementProps {
2022-06-29 02:17:10 +03:00
labelClassName?: string;
className?: string;
elementId?: string;
dataFilter?: string;
itemType?: string;
2024-06-02 20:58:11 +03:00
itemId?: string | null;
itemAppName?: string | null;
2022-06-29 02:17:10 +03:00
itemCheckedAttribute?: string;
2024-06-02 20:58:11 +03:00
itemName?: string | null;
title?: string;
}
2022-06-29 02:17:10 +03:00
2024-06-02 20:58:11 +03:00
const CheckBoxElement: FC<CheckBoxElementProps> = ({
labelClassName,
className,
elementId,
dataFilter,
itemType,
itemId,
itemAppName,
itemCheckedAttribute,
itemName,
title
}) => {
2022-06-29 02:17:10 +03:00
const appName = itemAppName ? `- ${itemAppName}` : '';
const renderContent = itemName ?
`<span>${escapeHTML(itemName || '')} ${appName}</span>` :
`<span>${globalize.translate(title)}</span>`;
return (
<div
className='sectioncheckbox'
dangerouslySetInnerHTML={createCheckBoxElement({
2024-06-02 20:58:11 +03:00
labelClassName: labelClassName ?
`class='${labelClassName}'` :
'',
2022-06-29 02:17:10 +03:00
className: className,
id: elementId ? `id='${elementId}'` : '',
dataFilter: dataFilter ? `data-filter='${dataFilter}'` : '',
dataItemType: itemType ? `data-itemtype='${itemType}'` : '',
dataId: itemId ? `data-id='${itemId}'` : '',
checkedAttribute: itemCheckedAttribute || '',
2022-06-29 02:17:10 +03:00
renderContent: renderContent
})}
/>
);
};
export default CheckBoxElement;