Source: widget/action.js

/**
 * Describes options to present to the user on the table to take an
 * action on a specific row.
 * 
 * This exists only for documentation purposes and is not actually
 * defined in the instance.
 * @memberof Specifications
 */
class Action {
	constructor() {
		/**
		 * With classes specifically for rendering an icon. This will generally follow font-awesome 4.7
		 * or another glyph set included on your portal
		 * @type {String}
		 */
		this.icon;
		/**
		 * CSS classes to apply to the button itself for styling. A good class to use here would be the
		 * Service-Now button classes, such as "btn btn-info" or similar.
		 * @type {String}
		 */
		this.classes;
		/**
		 * For the displayed text
		 * @type {String}
		 */
		this.label;
		/**
		 * Used for hover text (HTML title property) on the button
		 * @type {String}
		 */
		this.title;
		/**
		 * Indicating how interactions with this action should process.
		 * 
		 * Specific actions that are available:
		 * + `link` or `newlink` go to a URL. `newlink` doing so in a new window or tab
		 * + `form-modal` opens a modal on the page with a form view. Every key's value
		 * 		is filled in for the object passed to the modal. This action also uses several
		 * 		specific extra key values; `table`, `sys_id`, and `view` to specify the form to
		 * 		open. These values are template completed before being invoked.
		 * + `ajax-call` makes an AJAX call similar to a GlideAjax call. This action also fills
		 * 		out the key values for all keys on the object and then passes each key as a parameter
		 * 		in the AJAX call. The `tbl_class` is used to initialize the SPGlideAjax instance and
		 * `tbl_method` is specifically added as the `"sysparm_name"` parameter of the AJAX call.
		 * 		Both keys can also be specified specifically as a key:value pair on the row's data that
		 * 		can be completed for a more dynamic AJAX call. Additionally, a `tbl_complete` key is used
		 * 		for a switch case that can be either `redirect` or `newwindow` and will use the `new_url`
		 * 		key to open or redirect once a response is received. However, as a note, deeply nested
		 * 		data will NOT get replacements.
		 * @type {String}
		 */
		this.action;
		/**
		 * Optional object describing values that have to match for the action to display
		 * @type {Object}
		 */
		this.condition;
		/**
		 * Only for the `link` or `newlink` action, this specifies the URL. Template tokens here
		 * are replaced by the data rows' values.
		 * @type {String}
		 */
		this.perform;
		/**
		 * Only for the `form-modal` action. Specifies the table against which the form should open.
		 * @type {String}
		 */
		this.table;
		/**
		 * Only for the `form-modal` action. Specifies the sys_id of the record to open in the form.
		 * @type {String}
		 */
		this.sys_id;
		/**
		 * Only for the `form-modal` action. Specifies the view to use for the record in the modal.
		 * @type {String}
		 */
		this.view;
		/**
		 * Only for the `ajax-call` action. Specifies the class on which to initialize the GlideAjax.
		 * @type {String}
		 */
		this.ajax_class;
		/**
		 * Only for the `ajax-call` action. Specifies the method to invoke on the Script Include.
		 * @type {String}
		 */
		this.ajax_method;
		/**
		 * Only for the `ajax-call` action. Optional specification of an action to take once the call is
		 * complete.
		 * 
		 * Possible values:
		 * + `redirect`
		 * + `newwindow`
		 * @type {String}
		 */
		this.ajax_complete;
	}
}