Skip to content

Commit 820f301

Browse files
authored
Merge pull request #11 from WhiteShark23/module6-task2
2 parents 60da540 + 7acc6b4 commit 820f301

File tree

4 files changed

+71
-2
lines changed

4 files changed

+71
-2
lines changed

package-lock.json

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"node": "20"
3434
},
3535
"dependencies": {
36-
"dayjs": "1.11.7"
36+
"dayjs": "1.11.7",
37+
"flatpickr": "4.6.13"
3738
}
3839
}

src/presenter/board-presenter.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ export default class BoardPresenter {
9797
this.#boardPoints = updateItem(this.#boardPoints, updatedEvent);
9898
this.#sourcedBoardEvents = updateItem(this.#sourcedBoardEvents, updatedEvent);
9999
this.#eventsPresenter.get(updatedEvent.id).init(this.#pointsModel, updatedEvent);
100+
this.#clearEventList();
101+
this.#renderItemsEvent();
100102
};
101103

102104
#renderBoard() {

src/view/edit-event.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import AbstractStatefulView from '../framework/view/abstract-stateful-view.js';
22
import { humanizeTaskDueDate, DateFormat } from '../utils.js';
3+
import flatpickr from 'flatpickr';
4+
5+
import 'flatpickr/dist/flatpickr.min.css';
36

47
function createOffferTemplate (offer, checkedOffer) {
58
if (offer.offers.length === 0) {
@@ -164,6 +167,8 @@ export default class EditEventView extends AbstractStatefulView {
164167
#handleFormSubmit = null;
165168
#handleFormCloseClick = null;
166169
#destinations = null;
170+
#datePickerFrom = null;
171+
#datePickerTo = null;
167172

168173
constructor({pointsModel, point, onFormSubmit, onFormCloseClick}) {
169174
super();
@@ -200,6 +205,8 @@ export default class EditEventView extends AbstractStatefulView {
200205
this.element.querySelector('.event__type-group').addEventListener('change', this.#typeChangeHandler);
201206
this.element.querySelector('.event__input--destination').addEventListener('change', this.#destinationChangeHandler);
202207
this.element.querySelector('.event__input--price').addEventListener('input', this.#priceInputHandler);
208+
209+
this.#setDatepickers();
203210
}
204211

205212
#formFormHandler = (evt) => {
@@ -238,6 +245,59 @@ export default class EditEventView extends AbstractStatefulView {
238245
this._setState({ basePrice: newPrice });
239246
};
240247

248+
#dateFromCloseHandler = ([userDate]) => {
249+
this._setState({ dateFrom: userDate});
250+
this.#datePickerTo.set('minDate', this._state.dateFrom);
251+
};
252+
253+
#dateToCloseHandler = ([userDate]) => {
254+
this._setState({ dateTo: userDate});
255+
this.#datePickerFrom.set('maxDate', this._state.dateTo);
256+
};
257+
258+
#setDatepickers = () => {
259+
const [dateFromElement, dateToElement] = this.element.querySelectorAll('.event__input--time');
260+
const commonConfig = {
261+
dateFormat: 'd/m/y H:i',
262+
enableTime: true,
263+
locale: {firstDayOfWeek: 1},
264+
'time_24hr': true,
265+
};
266+
267+
this.#datePickerFrom = flatpickr(
268+
dateFromElement,
269+
{
270+
...commonConfig,
271+
defaultDate: this._state.dateFrom,
272+
onClose: this.#dateFromCloseHandler,
273+
maxDate: this._state.dateTo,
274+
}
275+
);
276+
277+
this.#datePickerTo = flatpickr(
278+
dateToElement,
279+
{
280+
...commonConfig,
281+
defaultDate: this._state.dateTo,
282+
onClose: this.#dateToCloseHandler,
283+
minDate: this._state.dateFrom,
284+
}
285+
);
286+
};
287+
288+
removeElement = () => {
289+
super.removeElement();
290+
if(this.#datePickerFrom) {
291+
this.#datePickerFrom.destroy();
292+
this.#datePickerFrom = null;
293+
}
294+
295+
if(this.#datePickerTo) {
296+
this.#datePickerTo.destroy();
297+
this.#datePickerTo = null;
298+
}
299+
};
300+
241301
static parseEditToState(edit) {
242302
return { ...edit };
243303
}

0 commit comments

Comments
 (0)