scripts.js 1.53 KB
/*
 * ADOBE CONFIDENTIAL
 *
 * Copyright 2017 Adobe Systems Incorporated
 * All Rights Reserved.
 *
 * NOTICE:  All information contained herein is, and remains
 * the property of Adobe Systems Incorporated and its suppliers,
 * if any.  The intellectual and technical concepts contained
 * herein are proprietary to Adobe Systems Incorporated and its
 * suppliers and may be covered by U.S. and Foreign Patents,
 * patents in process, and are protected by trade secret or copyright law.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe Systems Incorporated.
 */
(function(window, document, $) {
    'use strict';

    // Selector to the title field that will be used to generate the node name
    var TITLE_FIELD_SELECTOR = '.coral-Form-field[name="./jcr:title"]';

    // Selector to the node name field
    var NAME_FIELD_SELECTOR = '.coral-Form-field[name="label"]';

    $(document).on('input', TITLE_FIELD_SELECTOR, function(ev) {
        var title = ev.currentTarget.value;
        var autoLabel = title.toLowerCase()
            .replace(/[^a-z0-9_\-]/g, '-') // Only keep alphanumerical characters
            .replace(/-+/g, '-'); // Cleanup chains of '-'

        var labelField = $(NAME_FIELD_SELECTOR).adaptTo('foundation-field');
        var label = labelField.getValue();
        if (!label || autoLabel.substring(0, autoLabel.length - 1) === label) {
            labelField.setValue(autoLabel);
        }
    });

}(window, document, Granite.$));