|
6 | 6 | const SELECTOR_ADD_COLUMN = '.ibexa-btn--add-column';
|
7 | 7 | const SELECTOR_REMOVE_COLUMN = '.ibexa-btn--remove-column';
|
8 | 8 | const SELECTOR_TEMPLATE = '.ibexa-matrix-settings__column-template';
|
| 9 | + const ERROR_NODE_SELECTOR = '.ibexa-form-error'; |
9 | 10 | const NUMBER_PLACEHOLDER = /__number__/g;
|
10 | 11 | const getNextIndex = (parentNode) => {
|
11 | 12 | return parentNode.dataset.nextIndex++;
|
|
36 | 37 | node.insertAdjacentHTML('beforeend', template.replace(NUMBER_PLACEHOLDER, getNextIndex(node)));
|
37 | 38 |
|
38 | 39 | initColumns(settingsNode);
|
| 40 | + validateColumnsNumber(settingsNode); |
39 | 41 |
|
40 | 42 | node.closest('.ibexa-table').dispatchEvent(new CustomEvent('ibexa-refresh-main-table-checkbox'));
|
| 43 | + |
41 | 44 | doc.body.dispatchEvent(new CustomEvent('ibexa-inputs:added'));
|
| 45 | + doc.body.dispatchEvent( |
| 46 | + new CustomEvent('ibexa-fieldtype-matrix:added-column', { |
| 47 | + detail: { |
| 48 | + columnNode: node.querySelector(`${SELECTOR_COLUMN}:last-of-type`), |
| 49 | + }, |
| 50 | + }), |
| 51 | + ); |
42 | 52 | };
|
43 | 53 | const removeItems = (event) => {
|
44 | 54 | const settingsNode = event.target.closest(SELECTOR_SETTINGS_COLUMNS);
|
|
66 | 76 | });
|
67 | 77 |
|
68 | 78 | node.closest('.ibexa-table').dispatchEvent(new CustomEvent('ibexa-refresh-main-table-checkbox'));
|
| 79 | + validateColumnsNumber(settingsNode); |
69 | 80 | }, 0);
|
70 | 81 |
|
71 | 82 | initColumns(settingsNode);
|
|
91 | 102 |
|
92 | 103 | initColumns(container);
|
93 | 104 | };
|
| 105 | + const validateColumnsNumber = (settingsNode) => { |
| 106 | + const columns = settingsNode.querySelectorAll(SELECTOR_COLUMN); |
| 107 | + const errorNode = settingsNode.querySelector(ERROR_NODE_SELECTOR); |
| 108 | + |
| 109 | + errorNode.toggleAttribute('hidden', columns.length > 0); |
| 110 | + }; |
94 | 111 |
|
95 | 112 | doc.querySelectorAll(SELECTOR_SETTINGS_COLUMNS).forEach((container) => {
|
96 | 113 | initComponent(container);
|
|
0 commit comments