import { A_Caller, A_Feature, A_Inject, A_Scope } from "@adaas/a-concept";
import { A_Logger } from "@adaas/a-utils/a-logger";
import { Are, AreEvent, AreNode, AreScene, AreStore } from "@adaas/are";
export class AInput extends Are {
@Are.Template
async template(
@A_Inject(A_Caller) node: AreNode,
@A_Inject(A_Logger) logger: A_Logger
) {
logger.info('blue', `AInput template called... : <${node.aseid.entity}> : `, node.aseid.toString());
node.setTemplate(`
{{inputValue}}
`);
}
@Are.Data
async data(
@A_Inject(AreStore) store: AreStore,
) {
store.set({
placeholder: 'A_Input Element',
inputValue: 'Test',
});
}
@Are.EventHandler
async A_UI_NODE_onBeforeLoad(
@A_Inject(AreNode) node: AreNode,
@A_Inject(A_Scope) scope: A_Scope,
@A_Inject(AreStore) store: AreStore,
@A_Inject(A_Logger) logger: A_Logger,
): Promise {
logger.log('green', `AInput is initializing... : <${node.aseid.entity}> : `, node.aseid.toString());
// store.data.set('btnName', 'Nope');
}
@Are.EventHandler
async onChange(
@A_Inject(A_Scope) scope: A_Scope,
@A_Inject(A_Caller) node: AreNode,
@A_Inject(AreStore) store: AreStore,
@A_Inject(A_Logger) logger: A_Logger,
@A_Inject(AreEvent) event: AreEvent,
@A_Inject(AreScene) scene: AreScene,
) {
// const timeout = store.get('timeout');
// clearTimeout(timeout);
if (event.data.target === null
||
store.get('inputValue') === (event.data.target as HTMLInputElement).value
) return;
logger.log('green', `AInput onChange event triggered... : <${node.aseid.entity}> : `, node.aseid.toString(), (event.data.target as HTMLInputElement).value);
store.set('inputValue', (event.data.target as HTMLInputElement).value);
// store.set('timeout', setTimeout(async () => {
await node.update();
// }, 1000))
}
}