diff --git a/CHANGELOG.md b/CHANGELOG.md index 0db1ba66..c62c8d09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Fix [#1034](https://github.com/getgrav/grav/issues/1034) redirect of page creation procedure when system.home.hide_in_urls is enabled * Media (Page): Do not extend parent metehod for sending files since Safari and IE API for FormData don’t implement `delete` ([#772](https://github.com/getgrav/grav-plugin-admin/issues/772)) * Clean up POST keys containing square brackets, allows for regex ranges in routes ([#776](https://github.com/getgrav/grav-plugin-admin/issues/776)) + * Fix [#773](https://github.com/getgrav/grav-plugin-admin/issues/773) allow filepicker work inside lists, respond to mutation event # v1.2.2 ## 09/08/2016 diff --git a/themes/grav/app/forms/fields/filepicker.js b/themes/grav/app/forms/fields/filepicker.js index 838d2f3d..8df490d8 100644 --- a/themes/grav/app/forms/fields/filepicker.js +++ b/themes/grav/app/forms/fields/filepicker.js @@ -5,11 +5,29 @@ import request from '../../utils/request'; export default class FilePickerField { constructor(options) { - $('[data-grav-filepicker]').each((index, element) => this.add(element)); + this.items = $(); + this.options = Object.assign({}, this.defaults, options); + + $('[data-grav-filepicker]').each((index, element) => this.addItem(element)); + $('body').on('mutation._grav', this._onAddedNodes.bind(this)); } - add(element) { + _onAddedNodes(event, target/* , record, instance */) { + let fields = $(target).find('[data-grav-filepicker]'); + if (!fields.length) { return; } + + fields.each((index, field) => { + field = $(field); + if (!~this.items.index(field)) { + this.addItem(field); + } + }); + } + + addItem(element) { element = $(element); + this.items = this.items.add(element); + let tag = element.prop('tagName').toLowerCase(); let isInput = tag === 'input' || tag === 'select';