
Kryx, can you give a working example of the autoexpanding code with a textarea? I've tried copying the code form above and it wont work for me.
.sheet-graph-paper:checked ~ .sheet-pf-wrapper { background: linear-gradient(-90deg, rgba(0, 0, 0, .03) 1px, transparent 1px), linear-gradient(rgba(0, 0, 0, .03) 1px, transparent 1px), linear-gradient(-90deg, rgba(0, 0, 0, .03) 1px, transparent 1px), linear-gradient(rgba(0, 0, 0, .03) 1px, transparent 1px), linear-gradient(transparent 3px, transparent 3px, transparent 78px, transparent 78px), linear-gradient(-90deg, transparent 1px, transparent 1px), linear-gradient(-90deg, transparent 3px, transparent 3px, transparent 78px, transparent 78px), linear-gradient(transparent 1px, transparent 1px), transparent; background-size: 16px 16px, 16px 16px, 16px 16px, 16px 16px, 16px 16px, 16px 16px, 16px 16px, 16px 16px; }and it looks like this:
There is a claim on the web that Comic Sans was designed to be easier to read for people with dyslexia. That claim is false. The font was created to replace Times New Roman in the word balloons of Microsoft Bob, and was inspired by the lettering in The Dark Night and Watchmen comic books. The font failed to ship with Microsoft Bob, but eventually found its way into the default fonts list for Windows 95.chris b. said:
comic sans is also a good accessibility font
<input type="radio" name="attr_tab" class="sheet-tab sheet-tab1" value="1" checked="checked"><span title="First Tab"></span> <input type="radio" name="attr_tab" class="sheet-tab sheet-tab2" value="2"><span title="Second Tab"></span> <input type="radio" name="attr_tab" class="sheet-tab sheet-tab3" value="3"><span title="Third Tab"></span> <input type="radio" name="attr_tab" class="sheet-tab sheet-tab4" value="4"><span title="Fourth Tab"></span> <div class="sheet-tab-content sheet-tab1"> <h1>Tab 1</h1> Lorem ipsum dolor sit amet </div> <div class="sheet-tab-content sheet-tab2"> <h1>Tab the Second</h1> consectetur adipisicing elit </div> <div class="sheet-tab-content sheet-tab3"> <h1>3rd Tab</h1> sed do eiusmod tempor incididunt ut labore et dolore magna aliqua </div> <div class="sheet-tab-content sheet-tab4"> <h1>Fourth Tab</h1> Ut enim ad minim veniam </div>And in the CSS section, it ONLY includes this:
div.sheet-tab-content { display: none; } input.sheet-tab1:checked ~ div.sheet-tab1, input.sheet-tab2:checked ~ div.sheet-tab2, input.sheet-tab3:checked ~ div.sheet-tab3, input.sheet-tab4:checked ~ div.sheet-tab4 { display: block; } input.sheet-tab { width: 150px; height: 20px; position: relative; top: 5px; left: 6px; margin: -1.5px; cursor: pointer; z-index: 1; opacity: 0; } input.sheet-tab + span::before { content: attr(title); border: solid 1px #a8a8a8; border-bottom-color: black; text-align: center; display: inline-block; background: #fff; background: linear-gradient(to top, #c8c8c8, #fff, #c8c8c8); width: 150px; height: 20px; font-size: 18px; position: absolute; top: 12px; left: 13px; } input.sheet-tab:checked + span::before { background: #dcdcdc; background: linear-gradient(to top, #fcfcfc, #dcdcdc, #fcfcfc); border-bottom-color: #fff; } input.sheet-tab:not(:first-child) + span::before { border-left: none; } input.sheet-tab2 + span::before { background: #fee; background: linear-gradient(to top, #f8c8c8, #fee, #f8c8c8); left: 163px; } input.sheet-tab2:checked + span::before { background: #dcdcdc; background: linear-gradient(to top, #fcecec, #f8c8c8, #fcecec); border-bottom-color: #fcecec; } input.sheet-tab3 + span::before { left: 313px; } input.sheet-tab4 + span::before { left: 463px; } div.sheet-tab-content { border: 1px solid #a8a8a8; border-top-color: #000; margin: 2px 0 0 5px; padding: 5px; } div.sheet-tab2 { background-color: #fcecec; }
input.sheet-tab + span::before { content: attr(title); border: solid 1px #a8a8a8; border-bottom-color: black; text-align: center; display: inline-block; background: #fff; background: linear-gradient(to top, #c8c8c8, #fff, #c8c8c8); width: 150px; height: 20px; font-size: 18px; position: absolute; top: 71px; left: 35px; }
Scott S. said:
nobody wants to touch this I guess
<div class="sheet-auto-expand"> <span name="attr_name"></span> <textarea spellcheck="false" name="attr_name"></textarea> </div>CSS:
.sheet-auto-expand { position: relative; cursor: text; word-wrap: break-word; } .sheet-auto-expand span { visibility: hidden; white-space: pre-wrap; display: block; } .sheet-auto-expand textarea { position: absolute; z-index: 1; top: 0; left: 0; margin: 0; overflow: hidden; resize: none; height: 100%; width: 100%; display: block; box-sizing: border-box; background: transparent; border: none; border-radius: 0; box-shadow: none; color: inherit; font: inherit; letter-spacing: inherit; padding: inherit; text-align: inherit; text-transform: inherit; }
<div class="sheet-table" style="width: 99%;border: 4px;border-style:double;"> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel" style="width: 5%;"> </span> <span class="sheet-tdcs sheet-tinylabel" style="width: 5%;">DC</span> <span class="sheet-tdcs sheet-tinylabel" style="width: 90%;">Action</span> </div> <!-- End of Description Header Row --> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">1st:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc1" title="(@{repeating_ES_$X_skill_dc1})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action1" title="(@{repeating_ES_$X_dc_action1})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">2nd:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc2" title="(@{repeating_ES_$X_skill_dc2})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action2" title="(@{repeating_ES_$X_dc_action2})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">3rd:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc3" title="(@{repeating_ES_$X_skill_dc3})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action3" title="(@{repeating_ES_$X_dc_action3})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">4th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc4" title="(@{repeating_ES_$X_skill_dc4})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action4" title="(@{repeating_ES_$X_dc_action4})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">5th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc5" title="(@{repeating_ES_$X_skill_dc5})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action5" title="(@{repeating_ES_$X_dc_action5})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">6th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc6" title="(@{repeating_ES_$X_skill_dc6})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action6" title="(@{repeating_ES_$X_dc_action6})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">7th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc7" title="(@{repeating_ES_$X_skill_dc7})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action7" title="(@{repeating_ES_$X_dc_action7})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">8th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc8" title="(@{repeating_ES_$X_skill_dc8})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action8" title="(@{repeating_ES_$X_dc_action8})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">9th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc9" title="(@{repeating_ES_$X_skill_dc9})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action9" title="(@{repeating_ES_$X_dc_action9})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">10th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc10" title="(@{repeating_ES_$X_skill_dc10})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action10" title="(@{repeating_ES_$X_dc_action10})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">11th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc11" title="(@{repeating_ES_$X_skill_dc11})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action11" title="(@{repeating_ES_$X_dc_action11})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">12th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc12" title="(@{repeating_ES_$X_skill_dc12})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action12" title="(@{repeating_ES_$X_dc_action12})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">13th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc13" title="(@{repeating_ES_$X_skill_dc13})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action13" title="(@{repeating_ES_$X_dc_action13})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">14th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc14" title="(@{repeating_ES_$X_skill_dc14})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action14" title="(@{repeating_ES_$X_dc_action14})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">15th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc15" title="(@{repeating_ES_$X_skill_dc15})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action15" title="(@{repeating_ES_$X_dc_action15})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">16th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc16" title="(@{repeating_ES_$X_skill_dc16})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action16" title="(@{repeating_ES_$X_dc_action16})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">17th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc17" title="(@{repeating_ES_$X_skill_dc17})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action17" title="(@{repeating_ES_$X_dc_action17})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">18th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc18" title="(@{repeating_ES_$X_skill_dc18})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action18" title="(@{repeating_ES_$X_dc_action18})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">19th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc19" title="(@{repeating_ES_$X_skill_dc19})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action19" title="(@{repeating_ES_$X_dc_action19})"></span> </div> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">20th:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc20" title="(@{repeating_ES_$X_skill_dc20})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action20" title="(@{repeating_ES_$X_dc_action20})"></span> </div> </div>
// sheetworker
const skills = [];
for (let i = 1; i <= 20; i++) {
skills.push(`skill_dc${i}`);
skills.push(`dc_action${i}`);
}
on(`sheet:opened ${skills.map((s) => `change:${s}`).join(' ')}`, () => {
getAttrs(skills, (values) => {
const attrs = {};
for (let i = 1; i <= 20; i++) {
if (values[`skill_dc${i}`].length || values[`dc_action${i}`].length) {
attrs[`skill${i}_has_value`] = 1;
} else {
attrs[`skill${i}_has_value`] = 0;
}
}
setAttrs(attrs);
});
});
<!-- html (partial) -->
<div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">1st:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc1" title="(@{repeating_ES_$X_skill_dc1})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action1" title="(@{repeating_ES_$X_dc_action1})"></span> </div>
<input type="checkbox" class="sheet-hidden sheet-skill-has-value" name="attr_skill1_has_value" value="1"> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">2nd:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc2" title="(@{repeating_ES_$X_skill_dc2})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action2" title="(@{repeating_ES_$X_dc_action2})"></span> </div>
<input type="checkbox" class="sheet-hidden sheet-skill-has-value" name="attr_skill2_has_value" value="1"> <div class="sheet-table-row"> <span class="sheet-tdcs sheet-tinylabel">3rd:</span> <span class="sheet-tdcs"><input type="text" name="attr_skill_dc3" title="(@{repeating_ES_$X_skill_dc3})"></span> <span class="sheet-tdcs"><input type="text" name="attr_dc_action3" title="(@{repeating_ES_$X_dc_action3})"></span> </div> <input type="checkbox" class="sheet-hidden sheet-skill-has-value" name="attr_skill3_has_value" value="1"> <!-- etc... -->
/** css (partial) */Should hide all of the table-rows except the first two, and then show any table row with a value in the previous row.
.sheet-hidden,
.sheet-table-row {
display: none;
}
.sheet-table-row:first-child,
.sheet-table-row:nth-child(2),
.sheet-skill-has-value:checked + .sheet-table-row {
display: table-row; /** or whatever display value you're intending to use */
}
// create an array like ['skill_dc1', 'dc_action1', 'skill_dc2', 'dc_action2', etc...]
const skills = []; for (let i = 1; i <= 20; i++) { skills.push(`skill_dc${i}`); skills.push(`dc_action${i}`); }
// trigger when opening the sheet for the first time in a session, or when any of the dc/action fields change on(`sheet:opened ${skills.map((s) => `change:repeating_skills:${s}`).join(' ')}`, () => {
// get the row ids for all repitems
getSectionIDs('repeating_skills', (ids) => {
const repeatingSkills = [];
ids.forEach((id) => {
// get all the skill attribute names
for (let i = 1; i <= 20; i++) {
repeatingSkills.push([
`repeating_skills_${id}_${skills[(i - 1) * 2]}`,
`repeating_skills_${id}_${skills[i * 2 - 1]}`,
]);
}
});
// get all skill attribute values getAttrs(repeatingSkills.reduce((a, b) => a.concat(b), []), (values) => { const attrs = {};
// iterate over skills for (let i = 1; i <= 20; i++) {
// if either skill_dcN or dc_actionN has a value, skillN_has_value = 1, otherwise skillN_has_value = 0 if (values[repeatingSkills[i][0]].length || values[repeatingSkills[i][1]].length) { attrs[`repeating_skills_${id}_skill${i}_has_value`] = 1; } else { attrs[`repeating_skills_${id}_skill${i}_has_value`] = 0; } }
// save skillN_has_value values setAttrs(attrs);
});
}); });