@knovator/pagecreator-admin 0.3.2 → 0.4.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.
- package/index.cjs +173 -105
- package/index.css +123 -5
- package/index.js +173 -105
- package/package.json +1 -1
package/index.cjs
CHANGED
|
@@ -1680,6 +1680,7 @@ const DEFAULT_PERMISSIONS = {
|
|
|
1680
1680
|
update: true
|
|
1681
1681
|
};
|
|
1682
1682
|
const TRANSLATION_PAIRS_COMMON = {
|
|
1683
|
+
confirmationRequired: 'Confirmation Required',
|
|
1683
1684
|
permanentlyDelete: 'You are about to permanently delete the',
|
|
1684
1685
|
lossOfData: 'This action can lead to data loss. To prevent accidental actions we ask you to confirm your intention.',
|
|
1685
1686
|
pleaseType: 'Please type',
|
|
@@ -1697,7 +1698,8 @@ const TRANSLATION_PAIRS_COMMON = {
|
|
|
1697
1698
|
deleteButtonText: 'Delete',
|
|
1698
1699
|
saveButtonText: 'Save',
|
|
1699
1700
|
showing: 'Showing',
|
|
1700
|
-
of: 'of'
|
|
1701
|
+
of: 'of',
|
|
1702
|
+
typeHerePlaceholder: 'Type Here'
|
|
1701
1703
|
};
|
|
1702
1704
|
const TRANSLATION_PAIRS_WIDGET = {
|
|
1703
1705
|
'widget.name': 'Name',
|
|
@@ -1710,6 +1712,7 @@ const TRANSLATION_PAIRS_WIDGET = {
|
|
|
1710
1712
|
'widget.itemsTypePlaceholder': 'Select Items Type',
|
|
1711
1713
|
'widget.widgetType': 'Widget Type',
|
|
1712
1714
|
'widget.widgetTypeRequired': 'Widget Type is required',
|
|
1715
|
+
'widget.color': 'Color',
|
|
1713
1716
|
'widget.code': 'Code',
|
|
1714
1717
|
'widget.codePlaceholder': 'Enter code',
|
|
1715
1718
|
'widget.codeRequired': 'Code is required',
|
|
@@ -1735,6 +1738,8 @@ const TRANSLATION_PAIRS_WIDGET = {
|
|
|
1735
1738
|
const TRANSLATION_PAIRS_ITEM = {
|
|
1736
1739
|
'item.title': 'Title',
|
|
1737
1740
|
'item.titlePlaceholder': 'Enter title',
|
|
1741
|
+
'item.subtitle': 'Subtitle',
|
|
1742
|
+
'item.subTitlePlaceholder': 'Enter Subtitle',
|
|
1738
1743
|
'item.altText': 'Alt Text',
|
|
1739
1744
|
'item.altTextPlaceholder': 'Enter alt text',
|
|
1740
1745
|
'item.link': 'Link',
|
|
@@ -2768,8 +2773,9 @@ const getApiType = ({
|
|
|
2768
2773
|
};
|
|
2769
2774
|
|
|
2770
2775
|
const usePage = ({
|
|
2771
|
-
defaultLimit,
|
|
2772
2776
|
routes,
|
|
2777
|
+
defaultLimit,
|
|
2778
|
+
canList: _canList = true,
|
|
2773
2779
|
preConfirmDelete
|
|
2774
2780
|
}) => {
|
|
2775
2781
|
const [list, setList] = React.useState([]);
|
|
@@ -2975,10 +2981,10 @@ const usePage = ({
|
|
|
2975
2981
|
});
|
|
2976
2982
|
};
|
|
2977
2983
|
React.useEffect(() => {
|
|
2978
|
-
getPages();
|
|
2984
|
+
if (_canList) getPages();
|
|
2979
2985
|
getWidgets();
|
|
2980
2986
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
2981
|
-
}, [pageSize, currentPage]);
|
|
2987
|
+
}, [pageSize, currentPage, _canList]);
|
|
2982
2988
|
return {
|
|
2983
2989
|
list,
|
|
2984
2990
|
getPages,
|
|
@@ -3080,21 +3086,6 @@ function usePageState() {
|
|
|
3080
3086
|
return context;
|
|
3081
3087
|
}
|
|
3082
3088
|
|
|
3083
|
-
const Button = ({
|
|
3084
|
-
type: _type = 'primary',
|
|
3085
|
-
size: _size = 'base',
|
|
3086
|
-
onClick,
|
|
3087
|
-
className,
|
|
3088
|
-
children,
|
|
3089
|
-
disabled
|
|
3090
|
-
}) => {
|
|
3091
|
-
return /*#__PURE__*/React__default["default"].createElement("button", {
|
|
3092
|
-
className: classNames__default["default"]('khb_btn', `khb_btn-${_type}`, `khb_btn-${_size}`, className),
|
|
3093
|
-
onClick: onClick,
|
|
3094
|
-
disabled: disabled
|
|
3095
|
-
}, children);
|
|
3096
|
-
};
|
|
3097
|
-
|
|
3098
3089
|
const Pencil = ({
|
|
3099
3090
|
srText,
|
|
3100
3091
|
className
|
|
@@ -3161,7 +3152,7 @@ const Table = ({
|
|
|
3161
3152
|
}, loader) : /*#__PURE__*/React__default["default"].createElement("table", {
|
|
3162
3153
|
className: "khb_table"
|
|
3163
3154
|
}, /*#__PURE__*/React__default["default"].createElement("thead", {
|
|
3164
|
-
className: "
|
|
3155
|
+
className: "khb_thead"
|
|
3165
3156
|
}, /*#__PURE__*/React__default["default"].createElement("tr", null, dataKeys.map((key, i) => /*#__PURE__*/React__default["default"].createElement("th", {
|
|
3166
3157
|
scope: "col",
|
|
3167
3158
|
className: "khb_table-heading",
|
|
@@ -3169,17 +3160,22 @@ const Table = ({
|
|
|
3169
3160
|
}, key.label)), actions && ((actions === null || actions === void 0 ? void 0 : actions.edit) || (actions === null || actions === void 0 ? void 0 : actions.delete)) && /*#__PURE__*/React__default["default"].createElement("th", {
|
|
3170
3161
|
scope: "col",
|
|
3171
3162
|
className: "khb_table-heading"
|
|
3172
|
-
}, "Actions"))), /*#__PURE__*/React__default["default"].createElement("tbody",
|
|
3163
|
+
}, "Actions"))), /*#__PURE__*/React__default["default"].createElement("tbody", {
|
|
3164
|
+
className: "khb_tbody"
|
|
3165
|
+
}, data.length > 0 ? data.map((item, i) => /*#__PURE__*/React__default["default"].createElement("tr", {
|
|
3173
3166
|
className: "khb_table-row",
|
|
3174
3167
|
key: item['id'] || item['_id'] || i
|
|
3175
3168
|
}, dataKeys.map((key, j) => cellItemRenderer(item, key, j)), actions && /*#__PURE__*/React__default["default"].createElement("td", {
|
|
3176
3169
|
className: "khb_table-row-actions"
|
|
3177
|
-
}, actions.edit && /*#__PURE__*/React__default["default"].createElement(
|
|
3178
|
-
|
|
3170
|
+
}, actions.edit && typeof actions.edit === 'function' ? /*#__PURE__*/React__default["default"].createElement("button", {
|
|
3171
|
+
className: "khb_actions-update",
|
|
3172
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3173
|
+
// @ts-ignore
|
|
3179
3174
|
onClick: () => actions.edit(item)
|
|
3180
|
-
}, /*#__PURE__*/React__default["default"].createElement(Pencil, null)), actions.delete && /*#__PURE__*/React__default["default"].createElement(
|
|
3181
|
-
|
|
3182
|
-
|
|
3175
|
+
}, /*#__PURE__*/React__default["default"].createElement(Pencil, null)) : null, actions.delete && typeof actions.delete === 'function' && /*#__PURE__*/React__default["default"].createElement("button", {
|
|
3176
|
+
className: "khb_actions-delete",
|
|
3177
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3178
|
+
// @ts-ignore
|
|
3183
3179
|
onClick: () => actions.delete(item)
|
|
3184
3180
|
}, /*#__PURE__*/React__default["default"].createElement(Trash, null))))) : /*#__PURE__*/React__default["default"].createElement("tr", null, /*#__PURE__*/React__default["default"].createElement("td", {
|
|
3185
3181
|
colSpan: ((dataKeys === null || dataKeys === void 0 ? void 0 : dataKeys.length) || 0) + 1
|
|
@@ -3189,7 +3185,6 @@ const Table = ({
|
|
|
3189
3185
|
const PageTable = () => {
|
|
3190
3186
|
const {
|
|
3191
3187
|
list,
|
|
3192
|
-
canList,
|
|
3193
3188
|
onChangeFormState,
|
|
3194
3189
|
t,
|
|
3195
3190
|
loading,
|
|
@@ -3199,26 +3194,23 @@ const PageTable = () => {
|
|
|
3199
3194
|
} = usePageState();
|
|
3200
3195
|
const onUpdateClick = item => onChangeFormState('UPDATE', item);
|
|
3201
3196
|
const onDeleteClick = item => onChangeFormState('DELETE', item);
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
});
|
|
3220
|
-
}
|
|
3221
|
-
return null;
|
|
3197
|
+
return /*#__PURE__*/React__default["default"].createElement(Table, {
|
|
3198
|
+
data: list,
|
|
3199
|
+
loader: loader,
|
|
3200
|
+
loading: loading,
|
|
3201
|
+
dataKeys: [{
|
|
3202
|
+
label: t('page.tableName'),
|
|
3203
|
+
dataKey: 'name',
|
|
3204
|
+
highlight: true
|
|
3205
|
+
}, {
|
|
3206
|
+
label: t('page.tableCode'),
|
|
3207
|
+
dataKey: 'code'
|
|
3208
|
+
}],
|
|
3209
|
+
actions: {
|
|
3210
|
+
edit: canUpdate ? onUpdateClick : undefined,
|
|
3211
|
+
delete: canDelete ? onDeleteClick : undefined
|
|
3212
|
+
}
|
|
3213
|
+
});
|
|
3222
3214
|
};
|
|
3223
3215
|
|
|
3224
3216
|
const Checkbox = ({
|
|
@@ -3520,10 +3512,11 @@ var Input = Object.assign(Input$1, {
|
|
|
3520
3512
|
const PageSearch = () => {
|
|
3521
3513
|
const {
|
|
3522
3514
|
getPages,
|
|
3523
|
-
t
|
|
3515
|
+
t,
|
|
3516
|
+
canList
|
|
3524
3517
|
} = usePageState();
|
|
3525
3518
|
const callerRef = React.useRef(null);
|
|
3526
|
-
const [search, setSearch] = React.useState(
|
|
3519
|
+
const [search, setSearch] = React.useState('');
|
|
3527
3520
|
const onChangeSearch = str => {
|
|
3528
3521
|
setSearch(str);
|
|
3529
3522
|
if (callerRef.current) clearTimeout(callerRef.current);
|
|
@@ -3534,8 +3527,9 @@ const PageSearch = () => {
|
|
|
3534
3527
|
return /*#__PURE__*/React__default["default"].createElement(Input, {
|
|
3535
3528
|
type: "search",
|
|
3536
3529
|
value: search,
|
|
3530
|
+
disabled: !canList,
|
|
3537
3531
|
onChange: e => onChangeSearch(e.target.value),
|
|
3538
|
-
placeholder: t(
|
|
3532
|
+
placeholder: t('page.searchPages')
|
|
3539
3533
|
});
|
|
3540
3534
|
};
|
|
3541
3535
|
|
|
@@ -3931,13 +3925,14 @@ const SimpleForm = /*#__PURE__*/React.forwardRef(({
|
|
|
3931
3925
|
case 'text':
|
|
3932
3926
|
case 'number':
|
|
3933
3927
|
case 'url':
|
|
3928
|
+
case 'color':
|
|
3934
3929
|
default:
|
|
3935
3930
|
input = /*#__PURE__*/React__default["default"].createElement(Input, {
|
|
3936
3931
|
rest: register(schema.accessor, schema.validations || {}),
|
|
3937
3932
|
label: schema.label,
|
|
3938
3933
|
error: (_f = (_e = errors[schema.accessor]) === null || _e === void 0 ? void 0 : _e.message) === null || _f === void 0 ? void 0 : _f.toString(),
|
|
3939
3934
|
type: schema.type,
|
|
3940
|
-
className: "w-full p-2
|
|
3935
|
+
className: classNames__default["default"]('w-full p-2', schema.className),
|
|
3941
3936
|
placeholder: schema.placeholder,
|
|
3942
3937
|
disabled: _isUpdating && typeof schema.editable !== 'undefined' && !schema.editable || !_enable,
|
|
3943
3938
|
required: schema.required,
|
|
@@ -4104,6 +4099,21 @@ const PageForm = ({
|
|
|
4104
4099
|
}));
|
|
4105
4100
|
};
|
|
4106
4101
|
|
|
4102
|
+
const Button = ({
|
|
4103
|
+
type: _type = 'primary',
|
|
4104
|
+
size: _size = 'base',
|
|
4105
|
+
onClick,
|
|
4106
|
+
className,
|
|
4107
|
+
children,
|
|
4108
|
+
disabled
|
|
4109
|
+
}) => {
|
|
4110
|
+
return /*#__PURE__*/React__default["default"].createElement("button", {
|
|
4111
|
+
className: classNames__default["default"]('khb_btn', `khb_btn-${_type}`, `khb_btn-${_size}`, className),
|
|
4112
|
+
onClick: onClick,
|
|
4113
|
+
disabled: disabled
|
|
4114
|
+
}, children);
|
|
4115
|
+
};
|
|
4116
|
+
|
|
4107
4117
|
const AddButton$1 = () => {
|
|
4108
4118
|
const {
|
|
4109
4119
|
onChangeFormState,
|
|
@@ -4154,7 +4164,9 @@ const Pagination = ({
|
|
|
4154
4164
|
setCurrentPage,
|
|
4155
4165
|
showingText: _showingText = TRANSLATION_PAIRS_COMMON.showing,
|
|
4156
4166
|
pageText: _pageText = TRANSLATION_PAIRS_COMMON.page,
|
|
4157
|
-
ofText: _ofText = TRANSLATION_PAIRS_COMMON.of
|
|
4167
|
+
ofText: _ofText = TRANSLATION_PAIRS_COMMON.of,
|
|
4168
|
+
previousContent,
|
|
4169
|
+
nextContent
|
|
4158
4170
|
}) => {
|
|
4159
4171
|
const [localCurrentPage, setLocalCurrentPage] = React.useState(currentPage);
|
|
4160
4172
|
const updatePagination = () => {
|
|
@@ -4185,16 +4197,17 @@ const Pagination = ({
|
|
|
4185
4197
|
className: "khb_pagination-total"
|
|
4186
4198
|
}, _showingText, ' ', /*#__PURE__*/React__default["default"].createElement("span", {
|
|
4187
4199
|
className: "khb_pagination-total-showing"
|
|
4188
|
-
}, (currentPage - 1) * pageSize + 1), ' ', "-", ' ', /*#__PURE__*/React__default["default"].createElement("span", {
|
|
4200
|
+
}, !totalRecords ? 0 : (currentPage - 1) * pageSize + 1), ' ', "-", ' ', /*#__PURE__*/React__default["default"].createElement("span", {
|
|
4189
4201
|
className: "khb_pagination-total-showing"
|
|
4190
4202
|
}, Math.min(currentPage * pageSize, totalRecords)), ' ', _ofText, " ", totalRecords), /*#__PURE__*/React__default["default"].createElement("ul", {
|
|
4191
4203
|
className: "khb_pagination-actions"
|
|
4192
4204
|
}, /*#__PURE__*/React__default["default"].createElement(Button, {
|
|
4193
4205
|
size: "xs",
|
|
4194
4206
|
type: "secondary",
|
|
4207
|
+
className: "khb_pagination-previous",
|
|
4195
4208
|
disabled: currentPage - 1 === 0,
|
|
4196
4209
|
onClick: () => onPaginationButtonClick('previous')
|
|
4197
|
-
}, /*#__PURE__*/React__default["default"].createElement(ChevronLeft, {
|
|
4210
|
+
}, previousContent || /*#__PURE__*/React__default["default"].createElement(ChevronLeft, {
|
|
4198
4211
|
srText: "Previous"
|
|
4199
4212
|
})), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4200
4213
|
className: "khb_pagination-pager"
|
|
@@ -4205,13 +4218,15 @@ const Pagination = ({
|
|
|
4205
4218
|
id: "page",
|
|
4206
4219
|
value: localCurrentPage,
|
|
4207
4220
|
onChange: e => setLocalCurrentPage(Number(e.target.value)),
|
|
4208
|
-
onBlur: updatePagination
|
|
4221
|
+
onBlur: updatePagination,
|
|
4222
|
+
disabled: !totalRecords
|
|
4209
4223
|
}), ' ', "/ ", totalPages), /*#__PURE__*/React__default["default"].createElement(Button, {
|
|
4210
4224
|
size: "xs",
|
|
4211
4225
|
type: "secondary",
|
|
4212
|
-
|
|
4226
|
+
className: "khb_pagination-next",
|
|
4227
|
+
disabled: currentPage === totalPages || !totalRecords,
|
|
4213
4228
|
onClick: () => onPaginationButtonClick('next')
|
|
4214
|
-
}, /*#__PURE__*/React__default["default"].createElement(ChevronRight, {
|
|
4229
|
+
}, nextContent || /*#__PURE__*/React__default["default"].createElement(ChevronRight, {
|
|
4215
4230
|
srText: "Next"
|
|
4216
4231
|
}))));
|
|
4217
4232
|
};
|
|
@@ -4226,9 +4241,11 @@ const PagePagination = () => {
|
|
|
4226
4241
|
setCurrentPage
|
|
4227
4242
|
} = usePageState();
|
|
4228
4243
|
return /*#__PURE__*/React__default["default"].createElement(Pagination, {
|
|
4229
|
-
ofText: t(
|
|
4230
|
-
pageText: t(
|
|
4231
|
-
showingText: t(
|
|
4244
|
+
ofText: t('of'),
|
|
4245
|
+
pageText: t('page'),
|
|
4246
|
+
showingText: t('showing'),
|
|
4247
|
+
nextContent: t('nextContent'),
|
|
4248
|
+
previousContent: t('previousContent'),
|
|
4232
4249
|
totalPages: totalPages,
|
|
4233
4250
|
totalRecords: totalRecords,
|
|
4234
4251
|
currentPage: currentPage,
|
|
@@ -4292,11 +4309,13 @@ const DeleteModal = ({
|
|
|
4292
4309
|
onClose,
|
|
4293
4310
|
itemData,
|
|
4294
4311
|
onConfirmDelete,
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4312
|
+
confirmationRequired,
|
|
4313
|
+
permanentlyDelete,
|
|
4314
|
+
lossOfData,
|
|
4315
|
+
pleaseType,
|
|
4316
|
+
toProceedOrCancel,
|
|
4317
|
+
confirm,
|
|
4318
|
+
typeHerePlaceholder
|
|
4300
4319
|
}) => {
|
|
4301
4320
|
const [userInput, setUserInput] = React.useState('');
|
|
4302
4321
|
React.useEffect(() => {
|
|
@@ -4305,19 +4324,19 @@ const DeleteModal = ({
|
|
|
4305
4324
|
return itemData ? /*#__PURE__*/React__default["default"].createElement(Modal, {
|
|
4306
4325
|
open: formState === 'DELETE' && itemData ? true : false,
|
|
4307
4326
|
onClose: onClose,
|
|
4308
|
-
title:
|
|
4327
|
+
title: confirmationRequired || TRANSLATION_PAIRS_COMMON.confirmationRequired
|
|
4309
4328
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4310
4329
|
className: "khb_delete-header"
|
|
4311
|
-
}, /*#__PURE__*/React__default["default"].createElement("p", null,
|
|
4330
|
+
}, /*#__PURE__*/React__default["default"].createElement("p", null, permanentlyDelete || TRANSLATION_PAIRS_COMMON.permanentlyDelete, ' ', /*#__PURE__*/React__default["default"].createElement("b", null, itemData['name']))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4312
4331
|
className: "khb_delete-content"
|
|
4313
|
-
}, /*#__PURE__*/React__default["default"].createElement("p", null,
|
|
4332
|
+
}, /*#__PURE__*/React__default["default"].createElement("p", null, lossOfData || TRANSLATION_PAIRS_COMMON.lossOfData), /*#__PURE__*/React__default["default"].createElement("p", {
|
|
4314
4333
|
className: "khb_delete-note"
|
|
4315
|
-
},
|
|
4334
|
+
}, pleaseType || TRANSLATION_PAIRS_COMMON.pleaseType, ' ', /*#__PURE__*/React__default["default"].createElement("b", {
|
|
4316
4335
|
className: "text-black font-bold"
|
|
4317
|
-
}, itemData['name']), ' ',
|
|
4336
|
+
}, itemData['name']), ' ', toProceedOrCancel || TRANSLATION_PAIRS_COMMON.toProceedOrCancel)), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4318
4337
|
className: "khb_delete-actions"
|
|
4319
4338
|
}, /*#__PURE__*/React__default["default"].createElement(Input, {
|
|
4320
|
-
placeholder:
|
|
4339
|
+
placeholder: typeHerePlaceholder || TRANSLATION_PAIRS_COMMON.typeHerePlaceholder,
|
|
4321
4340
|
className: "khb_delete-input",
|
|
4322
4341
|
value: userInput,
|
|
4323
4342
|
onChange: e => setUserInput(e.target.value)
|
|
@@ -4326,7 +4345,7 @@ const DeleteModal = ({
|
|
|
4326
4345
|
}, /*#__PURE__*/React__default["default"].createElement(Button, {
|
|
4327
4346
|
disabled: userInput !== (itemData === null || itemData === void 0 ? void 0 : itemData['name']),
|
|
4328
4347
|
onClick: onConfirmDelete
|
|
4329
|
-
},
|
|
4348
|
+
}, confirm || TRANSLATION_PAIRS_COMMON.confirm)))) : null;
|
|
4330
4349
|
};
|
|
4331
4350
|
|
|
4332
4351
|
const Drawer = ({
|
|
@@ -4382,7 +4401,7 @@ const Drawer = ({
|
|
|
4382
4401
|
}, /*#__PURE__*/React__default["default"].createElement("p", {
|
|
4383
4402
|
className: "khb_drawer-header-title"
|
|
4384
4403
|
}, title)), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4385
|
-
className: "
|
|
4404
|
+
className: "khb_darwer-content"
|
|
4386
4405
|
}, children), footerContent && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4387
4406
|
className: "khb_drawer-footer"
|
|
4388
4407
|
}, footerContent)))))));
|
|
@@ -4461,8 +4480,12 @@ const Page = ({
|
|
|
4461
4480
|
loader,
|
|
4462
4481
|
explicitForm: _explicitForm = false,
|
|
4463
4482
|
children,
|
|
4464
|
-
|
|
4483
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
4484
|
+
// @ts-ignore
|
|
4485
|
+
permissions: _permissions = {},
|
|
4486
|
+
preConfirmDelete
|
|
4465
4487
|
}) => {
|
|
4488
|
+
const derivedPermissions = Object.assign(DEFAULT_PERMISSIONS, _permissions);
|
|
4466
4489
|
const formRef = React.useRef(null);
|
|
4467
4490
|
const derivedT = createTranslation(t, Object.assign(Object.assign({}, TRANSLATION_PAIRS_COMMON), TRANSLATION_PAIRS_PAGE));
|
|
4468
4491
|
const {
|
|
@@ -4485,7 +4508,9 @@ const Page = ({
|
|
|
4485
4508
|
onChangeWidgetSequence,
|
|
4486
4509
|
getPages
|
|
4487
4510
|
} = usePage({
|
|
4488
|
-
defaultLimit: 10
|
|
4511
|
+
defaultLimit: 10,
|
|
4512
|
+
preConfirmDelete,
|
|
4513
|
+
canList: derivedPermissions.list
|
|
4489
4514
|
});
|
|
4490
4515
|
return /*#__PURE__*/React__default["default"].createElement(PageContextProvider, {
|
|
4491
4516
|
t: derivedT,
|
|
@@ -4508,10 +4533,10 @@ const Page = ({
|
|
|
4508
4533
|
formState: formState,
|
|
4509
4534
|
closeForm: onCloseForm,
|
|
4510
4535
|
// permissions
|
|
4511
|
-
canAdd:
|
|
4512
|
-
canDelete:
|
|
4513
|
-
canUpdate:
|
|
4514
|
-
canList:
|
|
4536
|
+
canAdd: derivedPermissions.add,
|
|
4537
|
+
canDelete: derivedPermissions.delete,
|
|
4538
|
+
canUpdate: derivedPermissions.update,
|
|
4539
|
+
canList: derivedPermissions.list
|
|
4515
4540
|
}, children ? children : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(AddButton$1, null), /*#__PURE__*/React__default["default"].createElement(PageSearch, null), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4516
4541
|
className: "khb_table-wrapper"
|
|
4517
4542
|
}, /*#__PURE__*/React__default["default"].createElement(PageTable, null), /*#__PURE__*/React__default["default"].createElement(PagePagination, null))), !_explicitForm && /*#__PURE__*/React__default["default"].createElement(Drawer, {
|
|
@@ -4527,7 +4552,14 @@ const Page = ({
|
|
|
4527
4552
|
formState: formState,
|
|
4528
4553
|
itemData: itemData,
|
|
4529
4554
|
onClose: onCloseForm,
|
|
4530
|
-
onConfirmDelete: onCofirmDeletePage
|
|
4555
|
+
onConfirmDelete: onCofirmDeletePage,
|
|
4556
|
+
confirmationRequired: derivedT('confirmationRequired'),
|
|
4557
|
+
confirm: derivedT('confirm'),
|
|
4558
|
+
lossOfData: derivedT('lossOfData'),
|
|
4559
|
+
permanentlyDelete: derivedT('permanentlyDelete'),
|
|
4560
|
+
pleaseType: derivedT('pleaseType'),
|
|
4561
|
+
toProceedOrCancel: derivedT('toProceedOrCancel'),
|
|
4562
|
+
typeHerePlaceholder: derivedT('typeHerePlaceholder')
|
|
4531
4563
|
}));
|
|
4532
4564
|
};
|
|
4533
4565
|
Page.Table = PageTable;
|
|
@@ -4539,6 +4571,7 @@ Page.FormActions = PageFormActions;
|
|
|
4539
4571
|
Page.FormWrapper = PageFormWrapper;
|
|
4540
4572
|
|
|
4541
4573
|
const useWidget = ({
|
|
4574
|
+
canList: _canList = true,
|
|
4542
4575
|
defaultLimit,
|
|
4543
4576
|
routes,
|
|
4544
4577
|
preConfirmDelete
|
|
@@ -4960,9 +4993,9 @@ const useWidget = ({
|
|
|
4960
4993
|
}
|
|
4961
4994
|
});
|
|
4962
4995
|
React.useEffect(() => {
|
|
4963
|
-
getWidgets();
|
|
4996
|
+
if (_canList) getWidgets();
|
|
4964
4997
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4965
|
-
}, [pageSize, currentPage]);
|
|
4998
|
+
}, [pageSize, currentPage, _canList]);
|
|
4966
4999
|
return {
|
|
4967
5000
|
list,
|
|
4968
5001
|
getWidgets,
|
|
@@ -6196,7 +6229,9 @@ const WidgetTable = () => {
|
|
|
6196
6229
|
} = useProviderState();
|
|
6197
6230
|
const {
|
|
6198
6231
|
list,
|
|
6199
|
-
|
|
6232
|
+
canUpdate,
|
|
6233
|
+
canDelete,
|
|
6234
|
+
canPartialUpdate,
|
|
6200
6235
|
onChangeFormState,
|
|
6201
6236
|
onPartialUpdateWidget,
|
|
6202
6237
|
loading,
|
|
@@ -6210,7 +6245,25 @@ const WidgetTable = () => {
|
|
|
6210
6245
|
}, [onPartialUpdateWidget]);
|
|
6211
6246
|
const onUpdateClick = item => onChangeFormState('UPDATE', item);
|
|
6212
6247
|
const onDeleteClick = item => onChangeFormState('DELETE', item);
|
|
6213
|
-
|
|
6248
|
+
const dataKeys = [{
|
|
6249
|
+
label: t('widget.tableName'),
|
|
6250
|
+
dataKey: 'name',
|
|
6251
|
+
highlight: true
|
|
6252
|
+
}, {
|
|
6253
|
+
label: t('widget.tableCode'),
|
|
6254
|
+
dataKey: 'code'
|
|
6255
|
+
}];
|
|
6256
|
+
if (canPartialUpdate) dataKeys.push({
|
|
6257
|
+
label: t('widget.tableActive'),
|
|
6258
|
+
dataKey: 'isActive',
|
|
6259
|
+
Cell: ({
|
|
6260
|
+
row
|
|
6261
|
+
}) => canPartialUpdate ? /*#__PURE__*/React__default["default"].createElement(Toggle, {
|
|
6262
|
+
switchClass: switchClass,
|
|
6263
|
+
isChecked: row === null || row === void 0 ? void 0 : row.isActive,
|
|
6264
|
+
onChange: status => updateClosure(row, 'isActive', status)
|
|
6265
|
+
}) : null
|
|
6266
|
+
});
|
|
6214
6267
|
return /*#__PURE__*/React__default["default"].createElement(Table, {
|
|
6215
6268
|
data: list,
|
|
6216
6269
|
loader: loader,
|
|
@@ -6222,20 +6275,10 @@ const WidgetTable = () => {
|
|
|
6222
6275
|
}, {
|
|
6223
6276
|
label: t('widget.tableCode'),
|
|
6224
6277
|
dataKey: 'code'
|
|
6225
|
-
}, {
|
|
6226
|
-
label: t('widget.tableActive'),
|
|
6227
|
-
dataKey: 'isActive',
|
|
6228
|
-
Cell: ({
|
|
6229
|
-
row
|
|
6230
|
-
}) => /*#__PURE__*/React__default["default"].createElement(Toggle, {
|
|
6231
|
-
switchClass: switchClass,
|
|
6232
|
-
isChecked: row === null || row === void 0 ? void 0 : row.isActive,
|
|
6233
|
-
onChange: status => updateClosure(row, 'isActive', status)
|
|
6234
|
-
})
|
|
6235
6278
|
}],
|
|
6236
6279
|
actions: {
|
|
6237
|
-
edit: onUpdateClick,
|
|
6238
|
-
delete: onDeleteClick
|
|
6280
|
+
edit: canUpdate ? onUpdateClick : false,
|
|
6281
|
+
delete: canDelete ? onDeleteClick : false
|
|
6239
6282
|
}
|
|
6240
6283
|
});
|
|
6241
6284
|
};
|
|
@@ -6736,6 +6779,11 @@ const WidgetForm = ({
|
|
|
6736
6779
|
type: 'checkbox',
|
|
6737
6780
|
show: showAutoPlay,
|
|
6738
6781
|
switchClass: switchClass
|
|
6782
|
+
}, {
|
|
6783
|
+
label: t('widget.color'),
|
|
6784
|
+
accessor: 'backgroundColor',
|
|
6785
|
+
type: 'color',
|
|
6786
|
+
className: 'khb_input-color'
|
|
6739
6787
|
}, {
|
|
6740
6788
|
label: t('widget.webPerRow'),
|
|
6741
6789
|
accessor: 'webPerRow',
|
|
@@ -6792,6 +6840,11 @@ const WidgetForm = ({
|
|
|
6792
6840
|
accessor: 'title',
|
|
6793
6841
|
type: 'text',
|
|
6794
6842
|
placeholder: t('item.titlePlaceholder')
|
|
6843
|
+
}, {
|
|
6844
|
+
label: `${t('item.subtitle')}`,
|
|
6845
|
+
accessor: 'subtitle',
|
|
6846
|
+
type: 'text',
|
|
6847
|
+
placeholder: t('item.subTitlePlaceholder')
|
|
6795
6848
|
}, {
|
|
6796
6849
|
label: `${t('item.altText')}`,
|
|
6797
6850
|
accessor: 'altText',
|
|
@@ -6921,6 +6974,8 @@ const WidgetPagination = () => {
|
|
|
6921
6974
|
ofText: t('of'),
|
|
6922
6975
|
pageText: t('page'),
|
|
6923
6976
|
showingText: t('showing'),
|
|
6977
|
+
nextContent: t('nextContent'),
|
|
6978
|
+
previousContent: t('previousContent'),
|
|
6924
6979
|
totalPages: totalPages,
|
|
6925
6980
|
totalRecords: totalRecords,
|
|
6926
6981
|
currentPage: currentPage,
|
|
@@ -6932,7 +6987,8 @@ const WidgetPagination = () => {
|
|
|
6932
6987
|
const WidgetSearch = () => {
|
|
6933
6988
|
const {
|
|
6934
6989
|
getWidgets,
|
|
6935
|
-
t
|
|
6990
|
+
t,
|
|
6991
|
+
canList
|
|
6936
6992
|
} = useWidgetState();
|
|
6937
6993
|
const callerRef = React.useRef(null);
|
|
6938
6994
|
const [search, setSearch] = React.useState('');
|
|
@@ -6946,6 +7002,7 @@ const WidgetSearch = () => {
|
|
|
6946
7002
|
return /*#__PURE__*/React__default["default"].createElement(Input, {
|
|
6947
7003
|
type: "search",
|
|
6948
7004
|
value: search,
|
|
7005
|
+
disabled: !canList,
|
|
6949
7006
|
onChange: e => onChangeSearch(e.target.value),
|
|
6950
7007
|
placeholder: t('widget.searchPlaceholder')
|
|
6951
7008
|
});
|
|
@@ -6969,7 +7026,7 @@ const WidgetFormActions = ({
|
|
|
6969
7026
|
if (!formRef) {
|
|
6970
7027
|
return onError(CALLBACK_CODES.INTERNAL, 'error', `formRef is required to submit the form!`);
|
|
6971
7028
|
} else if (!formRef.current) {
|
|
6972
|
-
return onError(CALLBACK_CODES.INTERNAL, 'error', `formRef is empty, make sure it's passed as '
|
|
7029
|
+
return onError(CALLBACK_CODES.INTERNAL, 'error', `formRef is empty, make sure it's passed as 'formRef' prop to the form!`);
|
|
6973
7030
|
}
|
|
6974
7031
|
// formRef is provided
|
|
6975
7032
|
e === null || e === void 0 ? void 0 : e.preventDefault();
|
|
@@ -7007,12 +7064,15 @@ const Widget = ({
|
|
|
7007
7064
|
routes,
|
|
7008
7065
|
loader,
|
|
7009
7066
|
explicitForm: _explicitForm = false,
|
|
7010
|
-
|
|
7067
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
7068
|
+
// @ts-ignore
|
|
7069
|
+
permissions: _permissions = {},
|
|
7011
7070
|
preConfirmDelete,
|
|
7012
7071
|
formatListItem,
|
|
7013
7072
|
formatOptionLabel,
|
|
7014
7073
|
children
|
|
7015
7074
|
}) => {
|
|
7075
|
+
const derivedPermissions = Object.assign(DEFAULT_PERMISSIONS, _permissions);
|
|
7016
7076
|
const widgetFormRef = React.useRef(null);
|
|
7017
7077
|
const derivedT = createTranslation(t, Object.assign(Object.assign(Object.assign({}, TRANSLATION_PAIRS_COMMON), TRANSLATION_PAIRS_WIDGET), TRANSLATION_PAIRS_ITEM));
|
|
7018
7078
|
const {
|
|
@@ -7045,6 +7105,7 @@ const Widget = ({
|
|
|
7045
7105
|
itemsLoading,
|
|
7046
7106
|
onItemFormSubmit
|
|
7047
7107
|
} = useWidget({
|
|
7108
|
+
canList: derivedPermissions.list,
|
|
7048
7109
|
routes,
|
|
7049
7110
|
defaultLimit: 10,
|
|
7050
7111
|
preConfirmDelete
|
|
@@ -7081,11 +7142,11 @@ const Widget = ({
|
|
|
7081
7142
|
itemsLoading: itemsLoading,
|
|
7082
7143
|
onItemFormSubmit: onItemFormSubmit,
|
|
7083
7144
|
// Permissions
|
|
7084
|
-
canAdd:
|
|
7085
|
-
canDelete:
|
|
7086
|
-
canList:
|
|
7087
|
-
canUpdate:
|
|
7088
|
-
canPartialUpdate:
|
|
7145
|
+
canAdd: derivedPermissions.add,
|
|
7146
|
+
canDelete: derivedPermissions.delete,
|
|
7147
|
+
canList: derivedPermissions.list,
|
|
7148
|
+
canUpdate: derivedPermissions.update,
|
|
7149
|
+
canPartialUpdate: derivedPermissions.partialUpdate,
|
|
7089
7150
|
formState: formState,
|
|
7090
7151
|
closeForm: onCloseForm
|
|
7091
7152
|
}, children ? children : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(AddButton, null), /*#__PURE__*/React__default["default"].createElement(WidgetSearch, null), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -7103,7 +7164,14 @@ const Widget = ({
|
|
|
7103
7164
|
formState: formState,
|
|
7104
7165
|
itemData: itemData,
|
|
7105
7166
|
onClose: onCloseForm,
|
|
7106
|
-
onConfirmDelete: onCofirmDeleteWidget
|
|
7167
|
+
onConfirmDelete: onCofirmDeleteWidget,
|
|
7168
|
+
confirmationRequired: derivedT('confirmationRequired'),
|
|
7169
|
+
confirm: derivedT('confirm'),
|
|
7170
|
+
lossOfData: derivedT('lossOfData'),
|
|
7171
|
+
permanentlyDelete: derivedT('permanentlyDelete'),
|
|
7172
|
+
pleaseType: derivedT('pleaseType'),
|
|
7173
|
+
toProceedOrCancel: derivedT('toProceedOrCancel'),
|
|
7174
|
+
typeHerePlaceholder: derivedT('typeHerePlaceholder')
|
|
7107
7175
|
}));
|
|
7108
7176
|
};
|
|
7109
7177
|
Widget.Table = WidgetTable;
|