UNPKG

lisn.js

Version:

Simply handle user gestures and actions. Includes widgets.

1 lines 9.06 kB
{"version":3,"file":"check-trigger.cjs","names":["MH","_interopRequireWildcard","require","_domSearch","_event","_trigger","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","CheckTrigger","Trigger","register","registerTrigger","element","args","actions","config","newConfigValidator","constructor","_MH$targetOf","getConfig","copyObject","lengthOf","target","targetOf","isInstanceOf","HTMLInputElement","onToggle","checked","run","reverse","addEventListenerTo","onDestroy","removeEventListenerFrom","exports","key","_ref","isLiteralString","waitForReferenceElement","undefined"],"sources":["../../../src/ts/triggers/check-trigger.ts"],"sourcesContent":["/**\n * @module Triggers\n *\n * @categoryDescription Input\n * {@link CheckTrigger} allows you to run actions when the user checks a target\n * checkbox input element, and undo those actions when they uncheck the checkbox.\n */\n\nimport * as MH from \"@lisn/globals/minification-helpers\";\n\nimport { waitForReferenceElement } from \"@lisn/utils/dom-search\";\nimport { addEventListenerTo, removeEventListenerFrom } from \"@lisn/utils/event\";\n\nimport { Action } from \"@lisn/actions/action\";\n\nimport {\n registerTrigger,\n Trigger,\n TriggerConfig,\n} from \"@lisn/triggers/trigger\";\n\nimport { WidgetConfigValidatorFunc } from \"@lisn/widgets/widget\";\n\n/**\n * {@link CheckTrigger} allows you to run actions when the user checks a target\n * checkbox input element, and undo those actions when they uncheck the checkbox.\n *\n * -------\n *\n * To use with auto-widgets (HTML API), see {@link registerTrigger} for the\n * specification.\n *\n * - Arguments: none\n * - Additional trigger options (see {@link CheckTriggerConfig}:\n * - `target`: A string element specification.\n * See {@link Utils.getReferenceElement | getReferenceElement}.\n *\n * @example\n * Add classes `active` and `checked` when the user checks the checkbox,\n * remove them when unchecked.\n *\n * ```html\n * <input type=\"checkbox\" data-lisn-on-check=\"@add-class: active,checked\"/>\n * ```\n *\n * @example\n * As above, but using a CSS class instead of data attribute:\n *\n * ```html\n * <input type=\"checkbox\" class=\"lisn-on-check--@add-class: active,checked\"/>\n * ```\n *\n * @example\n * Play the animations on the element each time the user checks the next\n * element with class `checkbox` (do nothing when it's unchecked).\n *\n * ```html\n * <div data-lisn-on-check=\"@animate +one-way +target=next.checkbox\"></div>\n * <input type=\"checkbox\" class=\"checkbox\"/>\n * ```\n *\n * @example\n * Add class `used` the first time the user checks the next element with class\n * `checkbox`, and play or reverse the animations 200ms after each time the\n * user toggles the reference checkbox.\n *\n * ```html\n * <div data-lisn-on-check=\"@add-class: used +once ;\n * @animate +delay=200 +target=next.checkbox\"\n * ></div>\n * <input type=\"checkbox\" class=\"checkbox\"/>\n * ```\n *\n * @example\n * When the user checks the next element with class `checkbox` then add classes `c1`\n * and `c2` to the element (that the trigger is defined on) and enable trigger\n * `my-trigger` defined on this same element; undo all of that when the user unchecks\n * the reference checkbox.\n *\n * ```html\n * <div data-lisn-on-check=\"@add-class: c1,c2 @enable: my-trigger +target=next.checkbox\"\n * data-lisn-on-run=\"@show +id=my-trigger\"\n * ></div>\n * <input type=\"checkbox\" class=\"checkbox\"/>\n * ```\n *\n * @example\n * As above, but using `data-lisn-ref` attribute instead of class selector.\n *\n * ```html\n * <div data-lisn-on-check=\"@add-class: c1,c2 @enable: my-trigger +target=next-checkbox\"\n * data-lisn-on-run=\"@show +id=my-trigger\"\n * ></div>\n * <input type=\"checkbox\" data-lisn-ref=\"checkbox\"/>\n * ```\n *\n * @category Input\n */\nexport class CheckTrigger extends Trigger {\n readonly getConfig: () => CheckTriggerConfig;\n\n static register() {\n registerTrigger(\n \"check\",\n (element, args, actions, config) =>\n new CheckTrigger(element, actions, config),\n newConfigValidator,\n );\n }\n\n /**\n * If no actions are supplied, nothing is done.\n *\n * @throws {@link Errors.LisnUsageError | LisnUsageError}\n * If the config is invalid.\n */\n constructor(\n element: Element,\n actions: Action[],\n config?: CheckTriggerConfig,\n ) {\n super(element, actions, config);\n this.getConfig = () => MH.copyObject(config);\n\n if (!MH.lengthOf(actions)) {\n return;\n }\n\n const target = MH.targetOf(config) ?? element;\n\n if (!MH.isInstanceOf(target, HTMLInputElement)) {\n return;\n }\n\n const onToggle = () => (target.checked ? this.run() : this.reverse());\n\n addEventListenerTo(target, \"change\", onToggle);\n\n this.onDestroy(() => {\n removeEventListenerFrom(target, \"change\", onToggle);\n });\n }\n}\n\n/**\n * @category Input\n * @interface\n */\nexport type CheckTriggerConfig = TriggerConfig & {\n /**\n * The target to use for the hover action.\n *\n * @defaultValue The element on which the {@link Trigger} is defined\n */\n target?: Element;\n};\n\n// --------------------\n\nconst newConfigValidator: WidgetConfigValidatorFunc<CheckTriggerConfig> = (\n element,\n) => {\n return {\n target: (key, value) =>\n (MH.isLiteralString(value)\n ? waitForReferenceElement(value, element)\n : null) ?? undefined,\n };\n};\n"],"mappings":"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","ignoreList":[]}